Функции для работы со строками#
Строковые операторы#
Оператор ||
выполняет конкатенацию. Если один из аргументов 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 будут заменены символом замены UnicodeU+FFFD
.
- from_utf8(binary, replace) varchar
Декодирует строку в кодировке UTF-8 из
binary
. Недопустимые последовательности UTF-8 будут заменены строкойreplace
. Аргументreplace
должен состоять из одного символа, либо быть пустым (в этом случае недопустимые символы удаляются).