Строковые функции и операторы#

Строковые операторы#

Оператор || выполняет конкатенацию.

Оператор LIKE можно использовать для сопоставления с шаблоном; он описан в Сравнение по шаблону: LIKE.

Строковые функции#

Note

Эти функции предполагают, что входные строки содержат корректные Unicode кодовые точки в кодировке UTF-8. Явные проверки корректности UTF-8 отсутствуют, и функции могут возвращать некорректные результаты для некорректного UTF-8. Некорректные данные UTF-8 можно исправить с помощью from_utf8().

Кроме того, функции работают с Unicode кодовыми точками, а не с видимыми пользователю символами (или графемными кластерами). В некоторых языках несколько кодовых точек объединяются в один воспринимаемый пользователем символ - базовую единицу письменности языка, но функции будут обрабатывать каждую кодовую точку как отдельную единицу.

Функции lower() и upper() не выполняют локалезависимые, контекстно-зависимые или one-to-many преобразования, требуемые для некоторых языков. В частности, это даст некорректные результаты для литовского, турецкого и азербайджанского языков.

chr(n) varchar#

Возвращает Unicode кодовую точку n как строку из одного символа.

codepoint(string) integer#

Возвращает Unicode кодовую точку единственного символа в string.

concat(string1, ..., stringN) varchar#

Возвращает конкатенацию string1, string2, ..., stringN. Эта функция предоставляет ту же функциональность, что и SQL-стандартный оператор конкатенации (||).

concat_ws(separator, string1, ..., stringN) varchar#

Возвращает конкатенацию string1, string2, ..., stringN, используя separator для объединения значений. Если separator равен null, возвращаемое значение равно null. Любые значения null, переданные в аргументах после separator, пропускаются.

concat_ws(string0, array(varchar)) varchar

Возвращает конкатенацию элементов массива, используя string0 в качестве разделителя. Если string0 равен null, возвращаемое значение равно null. Любые значения null в массиве пропускаются.

format(format, args...) varchar

См. format().

hamming_distance(string1, string2) bigint#

Возвращает расстояние Хэмминга между string1 и string2, то есть количество позиций, в которых соответствующие символы различаются. Обратите внимание, что две строки должны иметь одинаковую длину.

length(string) bigint#

Возвращает длину string в символах.

levenshtein_distance(string1, string2) bigint#

Возвращает расстояние Левенштейна редактирования между string1 и string2, то есть минимальное количество правок одного символа (вставок, удалений или замен), необходимых для преобразования string1 в string2.

lower(string) varchar#

Преобразует string в нижний регистр.

lpad(string, size, padstring) varchar#

Дополняет string слева до size символов с помощью padstring. Если size меньше длины string, результат усекается до size символов. size не должен быть отрицательным, а padstring не должен быть пустым.

ltrim(string) varchar#

Удаляет начальные пробелы из string.

luhn_check(string) boolean#

Проверяет, является ли string из цифр корректной в соответствии с алгоритмом Луна.

Эта функция контрольной суммы, также известная как modulo 10 или mod 10, широко применяется к номерам кредитных карт и государственным идентификационным номерам для отличия корректных номеров от ошибочно введенных, некорректных номеров.

Корректный идентификационный номер:

select luhn_check('79927398713');
-- true

Некорректный идентификационный номер:

select luhn_check('79927398714');
-- false
position(substring IN string) bigint#

Возвращает начальную позицию первого вхождения substring в string. Позиции начинаются с 1. Если не найдено, возвращается 0.

Note

Эта SQL-стандартная функция имеет специальный синтаксис и использует ключевое слово IN для аргументов. См. также strpos().

replace(string, search) varchar#

Удаляет все вхождения search из string.

replace(string, search, replace) varchar

Заменяет все вхождения search на replace в string.

reverse(string) varchar#

Возвращает string с символами в обратном порядке.

rpad(string, size, padstring) varchar#

Дополняет string справа до size символов с помощью padstring. Если size меньше длины string, результат усекается до size символов. size не должен быть отрицательным, а padstring не должен быть пустым.

rtrim(string) varchar#

Удаляет конечные пробелы из string.

soundex(char) string#
soundex возвращает символьную строку, содержащую фонетическое представление char.

Обычно используется для оценки фонетической схожести двух выражений, то есть того, как строка звучит при произнесении:

SELECT name
FROM nation
WHERE SOUNDEX(name)  = SOUNDEX('CHYNA');

 name  |
-------+----
 CHINA |
(1 row)
split(string, delimiter)#

Разбивает string по delimiter и возвращает массив.

split(string, delimiter, limit)

Разбивает string по delimiter и возвращает массив размером не более limit. Последний элемент массива всегда содержит все, что осталось в string. limit должен быть положительным числом.

split_part(string, delimiter, index) varchar#

Разбивает string по delimiter и возвращает поле index. Индексы полей начинаются с 1. Если индекс больше, чем количество полей, возвращается null.

split_to_map(string, entryDelimiter, keyValueDelimiter) map<varchar, varchar>#

Разбивает string по entryDelimiter и keyValueDelimiter и возвращает map. entryDelimiter разбивает string на пары ключ-значение. keyValueDelimiter разбивает каждую пару на ключ и значение.

split_to_multimap(string, entryDelimiter, keyValueDelimiter)#

Разбивает string по entryDelimiter и keyValueDelimiter и возвращает map, содержащий массив значений для каждого уникального ключа. entryDelimiter разбивает string на пары ключ-значение. keyValueDelimiter разбивает каждую пару на ключ и значение. Значения для каждого ключа будут в том же порядке, в котором они встречались в string.

strpos(string, substring) bigint#

Возвращает начальную позицию первого вхождения substring в string. Позиции начинаются с 1. Если не найдено, возвращается 0.

strpos(string, substring, instance) bigint

Возвращает позицию N-го instance substring в string. Если instance является отрицательным числом, поиск начнется с конца string. Позиции начинаются с 1. Если не найдено, возвращается 0.

starts_with(string, substring) boolean#

Проверяет, является ли substring префиксом string.

substr(string, start) varchar#

Это псевдоним для substring().

substring(string, start) varchar#

Возвращает остаток string начиная с позиции start. Позиции начинаются с 1. Отрицательная начальная позиция интерпретируется как смещение относительно конца строки.

substr(string, start, length) varchar

Это псевдоним для substring().

substring(string, start, length) varchar

Возвращает подстроку из string длиной length, начиная с позиции start. Позиции начинаются с 1. Отрицательная начальная позиция интерпретируется как смещение относительно конца строки.

translate(source, from, to) varchar#

Возвращает строку source, преобразованную заменой символов, найденных в строке from, соответствующими символами из строки to. Если строка from содержит дубликаты, используется только первое вхождение. Если символ source отсутствует в строке from, символ source копируется без преобразования. Если индекс совпавшего символа в строке from выходит за пределы длины строки to, символ source будет опущен в результирующей строке.

Ниже приведены примеры, иллюстрирующие функцию translate:

SELECT translate('abcd', '', ''); -- 'abcd'
SELECT translate('abcd', 'a', 'z'); -- 'zbcd'
SELECT translate('abcda', 'a', 'z'); -- 'zbcdz'
SELECT translate('Palhoça', 'ç','c'); -- 'Palhoca'
SELECT translate('abcd', 'b', U&'\+01F600'); -- a😀cd
SELECT translate('abcd', 'a', ''); -- 'bcd'
SELECT translate('abcd', 'a', 'zy'); -- 'zbcd'
SELECT translate('abcd', 'ac', 'z'); -- 'zbd'
SELECT translate('abcd', 'aac', 'zq'); -- 'zbd'
trim(string) varchar

Удаляет начальные и конечные пробелы из string.

trim([ [ specification ] [ string ] FROM ] source ) varchar#

Удаляет любые начальные и/или конечные символы в соответствии с заданием, вплоть до и включая string, из source:

SELECT trim('!' FROM '!foo!'); -- 'foo'
SELECT trim(LEADING FROM '  abcd');  -- 'abcd'
SELECT trim(BOTH '$' FROM '$var$'); -- 'var'
SELECT trim(TRAILING 'ER' FROM upper('worker')); -- 'WORK'
upper(string) varchar#

Преобразует string в верхний регистр.

word_stem(word) varchar#

Возвращает основу word в английском языке.

word_stem(word, lang) varchar

Возвращает основу word для языка lang.

Unicode-функции#

normalize(string) varchar#

Преобразует string с использованием формы нормализации NFC.

normalize(string, form) varchar

Преобразует string с использованием указанной формы нормализации. form должен быть одним из следующих ключевых слов:

Form

Description

NFD

Canonical Decomposition

NFC

Canonical Decomposition, followed by Canonical Composition

NFKD

Compatibility Decomposition

NFKC

Compatibility Decomposition, followed by Canonical Composition

Note

Эта SQL-стандартная функция имеет специальный синтаксис и требует указывать form как ключевое слово, а не как строку.

to_utf8(string) varbinary#

Кодирует string в представление UTF-8 varbinary.

from_utf8(binary) varchar#

Декодирует строку в кодировке UTF-8 из binary. Некорректные UTF-8 последовательности заменяются на Unicode символ замены U+FFFD.

from_utf8(binary, replace) varchar

Декодирует строку в кодировке UTF-8 из binary. Некорректные UTF-8 последовательности заменяются на replace. Строка замены replace должна быть либо одним символом, либо пустой (в этом случае некорректные символы удаляются).