Функции для работы со строками#

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

Оператор || выполняет конкатенацию. Если один из аргументов NULL, результат так же будет NULL.

Оператор LIKE может использоваться для сопоставления с паттерном и описан в разделе LIKE.

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

Примечание

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

Функции работают с кодовыми точками Unicode, а не с символами, видимыми пользователем. Некоторые языки объединяют несколько кодовых точек в один воспринимаемый пользователем символ.

Функции lower() и upper() не используют локали или иной контекст для преобразования строк. Это может возвращать некорректные результаты для некоторых языков, например, Литовского, Турецкого и Азербайджанского.

chr(n) varchar#

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

codepoint(string) integer#

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

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

Конкатенирует аргументы string1, ..., stringN. Функция аналогична оператору конкатенации ||.

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

Конкатенирует строки string1, string2, ..., stringN, используя string0 в качестве разделителя. Если string0 имеет значение NULL, возвращаемое значение так же будет NULL. NULL значения в аргументах после разделителя будут проигнорированы.

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 (расстояние редактирования Левенштейна).

lower(string) varchar#

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

lpad(string, size, padstring) varchar#

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

ltrim(string) varchar#

Удаляет пробелы (whitespaces) из 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.

Примечание

Эта стандартная функция 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#

Удаляет пробелы (whitespaces) из 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 и возвращает словарь. entryDelimiter разбивает string на пары ключ-значение. keyValueDelimiter разбивает каждую пару на ключ и значение.

split_to_multimap(string, entryDelimiter, keyValueDelimiter)#

Разбивает string с помощью entryDelimiter и keyValueDelimiter и возвращает словарь, содержащий массив значений для каждого уникального ключа. 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. Отрицательное значение start интерпретируется как положение относительно конца строки.

substr(string, start, length) varchar

Псевдоним для substring().

substring(string, start, length) varchar

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

translate(source, from, to) varchar#

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

Примеры:

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

Удаляет пробелы (whitespaces) из string слева и справа.

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

Удаляет все символы string из source слева и/или справа в соответствии со specification. Если specification не указан, будет использовано значение по умолчанию BOTH.

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 должно быть одним из:

Форма

Описание

NFD

Каноническая декомпозиция

NFC

Каноническая декомпозиция за которой следует каноническая композиция

NFKD

Декомпозиция совместимости

NFKC

Декомпозиция совместимости за которой следует каноническая композиция

Примечание

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

to_utf8(string) varbinary#

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

from_utf8(binary) varchar#

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

from_utf8(binary, replace) varchar

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