Строки и символьные функции в Оracle

Строковые литералы в Оracle - это последовательность из нуля, одного или более символов, заключенных в одинарные кавычки.
У новичков часто встречается ошибка, когда строки заключаются в двойные кавычки или наоборот, названия объектов в одинарные.

insert into 'MY_DOC' ('DOC_ID', 'DOC_NAME') values ("1", "Документ 1");

Error at Command Line:1 Column:12
SQL Error: ORA-00903: неверно имя таблицы
00903. 00000 - "invalid table name"

Error at Command Line:1 Column:57
SQL Error: ORA-00984: употребление столбца здесь недопустимо
00984. 00000 - "column not allowed here"


Строка нулевой длины, т.е. '' это не то же самое что NULL. Если в строке NULL, это говорит о том, что значение не известно или
не установлено. Если в строке '', это значит что строка пустая, но ее значение известно.

Конкатенация (соеднинение) строк выполняется оператором || (две вертикальные черты) или функцией CONCAT

select 'Employee: ' || initcap(ename), concat('Dept: ',deptno)
from emp;

Oracle предлагает обширный набор функций для манипулирования строковыми данными:
CHR(N) - Возвращает символ ASCII кода для десятичного кода N
ASCII(S) - Возвращает десятичный ASCII код первого символа строки
INSTR(S2.S1.pos[,N] - Возвращает позицию строки S1 в строке S2 большую или равную pos.N - число вхождений
LENGHT(S) - Возвращает длину строки
LOWER(S) - Заменяет все символы строки на прописные символы
INITCAP(S) - Устанавливает первый символ каждого слова в строке на заглавный, а остальные символы каждого слова - на прописные
SUBSTR(S,pos,[,len]) - Выделяет в строке S подстроку длиной len, начиная с позиции pos
UPPER(S) - Преобразует прописные букцвы в строке на заглавные буквы
LPAD(S,N[,A]) - Возвращает строку S, дополненную слева симолами A до числа символов N. Символ - наполнитель по умолчанию - пробел
RPAD(S,N[,A]) - Возвращает строку S, дополненную справа симолами A до числа символов N. Символ - наполнитель по умолчанию - пробел
LTRIM(S,[S1]) - Возвращает усеченную слева строку S. Символы удаляются до тех пор, пока удаляемый символ входит в строку - шаблон S1 (по умолчанию - пробел)
RTRIM(S,[S1]) - Возвращает усеченную справа строку S. Символы удаляются до тех пор, пока удаляемый символ входит в строку - шаблон S1 (по умолчанию - пробел
TRANSLATE(S,S1,S2) - Возвращает строку S, в которой все вхождения строки S1 замещены строкой S2. Если S1 <> S2, то символы, которым нет соответствия,
исключаются из результирующей строки
REPLACE(S,S1,[,S2]) - Возвращает строку S, для которой все вхождения строки S1 замещены на подстроку S2. Если S2 не указано, то все вхождения подстроки S1
удаляются из результирующей строки
NVL(X,Y) - Если Х есть NULL, то возвращает в Y либо строку, либо число, либо дату в зависимости от исходного типа Y
SOUNDEX(S) - Возвращает фонетическое представление строки
REGEX_INSTR(S,S1,[N1],[N2],[N3],[S2]) - Возвращает позицию в строке S текста, удовлетворяющего регулярному выражению S1
REGEX_REPLACE(S,S1,S2,[N1],[N2],[S3]) - Возвращает строку S, в которой все вхождения строк, удовлетворяющих регулярному выражению S1, замещены на S2
REGEX_SUBSTR(S,S1,[N1],[N2],[S2]) - Возвращает подстроку из строки S, удовлетворяющего регулярному выражению S1

All trademarks and trade names are the property of their respective owners. Упомянутые торговые марки и названия принадлежат их законным владельцам. При любом использовании материалов блога ссылка обязательна.