Функция Oracle INITCAP не будет делать то, что нужно, потому что она меняет первый символ каждого слова в строке на верхний регистр, все остальные символы в нижнем регистре. Вот функция PL / SQL для Oracle, которая в верхнем регистре первого символа предложения и в нижнем регистре остальных:
CREATE OR REPLACE FUNCTION UPCASE_SENTENCES(strText IN VARCHAR2) RETURN VARCHAR2 IS
strResult VARCHAR2(32767);
bUpcase_next BOOLEAN := TRUE;
i NUMBER;
thisC VARCHAR2(1);
FUNCTION isWhitespace(strC IN VARCHAR2) RETURN BOOLEAN IS
BEGIN
IF ASCII(strC) < 33 OR ASCII(strC) > 126 THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
END isWhitespace;
BEGIN
FOR i IN 1..LENGTH(strText) LOOP
thisC := SUBSTR(strText, i, 1);
IF bUpcase_next AND NOT isWhitespace(thisC) THEN
strResult := strResult || UPPER(thisC);
bUpcase_next := FALSE;
ELSE
strResult := strResult || LOWER(thisC);
IF thisC IN ('.', '?', '!') THEN
bUpcase_next := TRUE;
END IF;
END IF;
END LOOP;
RETURN strResult;
END UPCASE_SENTENCES;
Надеюсь, это поможет.