Oracle Database
Манипуляция строк
Поиск…
Конкатенация: оператор || или concat ()
Oracle SQL и PL / SQL ||
оператор позволяет объединить две или более строки вместе.
Пример:
Предполагая следующую таблицу customers
:
id firstname lastname
--- ----------- ----------
1 Thomas Woody
Запрос:
SELECT firstname || ' ' || lastname || ' is in my database.' as "My Sentence"
FROM customers;
Выход:
My Sentence
---------------------------------
Thomas Woody is in my database.
Oracle также поддерживает стандартную функцию SQL CONCAT(str1, str2)
:
Пример:
Запрос:
SELECT CONCAT(firstname, ' is in my database.') from customers;
Выход:
Expr1
---------------------------------
Thomas is in my database.
ВЕРХНИЙ
Функция UPPER позволяет вам преобразовывать все строчные буквы в строке в верхний регистр.
SELECT UPPER('My text 123!') AS result FROM dual;
Выход:
RESULT
------------
MY TEXT 123!
INITCAP
Функция INITCAP
преобразует случай строки, так что каждое слово начинается с заглавной буквы, а все последующие буквы имеют строчный регистр.
SELECT INITCAP('HELLO mr macdonald!') AS NEW FROM dual;
Выход
NEW
-------------------
Hello Mr Macdonald!
НИЖНИЙ
LOWER преобразует все прописные буквы в строку в нижний регистр.
SELECT LOWER('HELLO World123!') text FROM dual;
Выходы:
текст |
---|
привет мир123! |
Регулярное выражение
Предположим, мы хотим заменить только цифры двумя цифрами: регулярное выражение найдет их с (\d\d)
SELECT REGEXP_REPLACE ('2, 5, and 10 are numbers in this example', '(\d\d)', '#')
FROM dual;
Результаты в:
'2, 5, and # are numbers in this example'
Если я хочу поменять части текста, я использую \1
, \2
, \3
чтобы вызывать соответствующие строки:
SELECT REGEXP_REPLACE ('swap around 10 in that one ', '(.*)(\d\d )(.*)', '\3\2\1\3')
FROM dual;
SUBSTR
SUBSTR
извлекает часть строки, указывая начальную позицию и количество символов для извлечения
SELECT SUBSTR('abcdefg',2,3) FROM DUAL;
возвращает:
bcd
Для подсчета с конца строки SUBSTR
принимает отрицательное число в качестве второго параметра, например
SELECT SUBSTR('abcdefg',-4,2) FROM DUAL;
возвращает:
de
Чтобы получить последний символ в строке: SUBSTR(mystring,-1,1)
LTRIM / RTRIM
LTRIM
и RTRIM
удаляют символы из начала или конца строки (соответственно). Может быть поставлен набор из одного или нескольких символов (по умолчанию это пробел) для удаления.
Например,
select LTRIM('<===>HELLO<===>', '=<>')
,RTRIM('<===>HELLO<===>', '=<>')
from dual;
Возвращает:
HELLO<===>
<===>HELLO