Функции для работы со строками
empty
Проверяет, является ли входная строка пустой.
Синтаксис
empty(x)
Строка считается непустой, если содержит хотя бы один байт, пусть даже это пробел или нулевой байт.
Функция также поддерживает работу с типами Array и UUID.
Параметры
x
— Входная строка. String.
Возвращаемое значение
- Возвращает
1
для пустой строки и0
— для непустой строки.
Тип: UInt8.
Пример
Запрос:
SELECT empty('text');
Результат:
┌─empty('text')─┐
│ 0 │
└───────────────┘
notEmpty
Проверяет, является ли входная строка непустой.
Синтаксис
notEmpty(x)
Строка считается непустой, если содержит хотя бы один байт, пусть даже это пробел или нулевой байт.
Функция также поддерживает работу с типами Array и UUID.
Параметры
x
— Входная строка. String.
Возвращаемое значение
- Возвращает
1
для непустой строки и0
— для пустой строки.
Тип: UInt8.
Пример
Запрос:
SELECT notEmpty('text');
Результат:
┌─notEmpty('text')─┐
│ 1 │
└──────────────────┘
length
Возвращает длину строки в байтах (не символах, не кодовых точках). Тип результата — UInt64. Функция также работает для массивов.
lengthUTF8
Возвращает длину строки в кодовых точках Unicode (не символах), при допущении, что строка содержит набор байтов, являющийся текстом в кодировке UTF-8. Если допущение не выполнено, то возвращает какой-нибудь результат (не кидает исключение). Тип результата — UInt64.
char_length, CHAR_LENGTH
Возвращает длину строки в кодовых точках Unicode (не символах), при допущении, что строка содержит набор байтов, являющийся текстом в кодировке UTF-8. Если допущение не выполнено, возвращает какой-нибудь результат (не кидает исключение). Тип результата — UInt64.
character_length, CHARACTER_LENGTH
Возвращает длину строки в кодовых точках Unicode (не символах), при допущении, что строка содержит набор байтов, являющийся текстом в кодировке UTF-8. Если допущение не выполнено, возвращает какой-нибудь результат (не кидает исключение). Тип результата — UInt64.
leftPad
Дополняет текущую строку слева пробелами или указанной строкой (несколько раз, если необходимо), пока результирующая строка не достигнет заданной длины. Соответствует MySQL функции LPAD
.
Синтаксис
leftPad('string', 'length'[, 'pad_string'])
Параметры
string
— входная строка, которую необходимо дополнить. String.length
— длина результирующей строки. UInt. Если указанное значение меньше, чем длина входной строки, то входная строка возвращается как есть.pad_string
— строка, используемая для дополнения входной строки. String. Необязательный параметр. Если не указано, то входная строка дополняется пробелами.
Возвращаемое значение
- Результирующая строка заданной длины.
Type: String.
Пример
Запрос:
SELECT leftPad('abc', 7, '*'), leftPad('def', 7);
Результат:
┌─leftPad('abc', 7, '*')─┬─leftPad('def', 7)─┐
│ ****abc │ def │
└────────────────────────┴───────────────────┘
leftPadUTF8
Дополняет текущую строку слева пробелами или указанной строкой (несколько раз, если необходимо), пока результирующая строка не достигнет заданной длины. Соответствует MySQL функции LPAD
. В отличие от функции leftPad, измеряет длину строки не в байтах, а в кодовых точках Unicode.
Синтаксис
leftPadUTF8('string','length'[, 'pad_string'])
Параметры
string
— входная строка, которую необходимо дополнить. String.length
— длина результирующей строки. UInt. Если указанное значение меньше, чем длина входной строки, то входная строка возвращается как есть.pad_string
— строка, используемая для дополнения входной строки. String. Необязательный параметр. Если не указано, то входная строка дополняется пробелами.
Возвращаемое значение
- Результирующая строка заданной длины.
Type: String.
Пример
Запрос:
SELECT leftPadUTF8('абвг', 7, '*'), leftPadUTF8('дежз', 7);
Результат:
┌─leftPadUTF8('абвг', 7, '*')─┬─leftPadUTF8('дежз', 7)─┐
│ ***абвг │ дежз │
└─────────────────────────────┴────────────────────────┘
rightPad
Дополняет текущую строку справа пробелами или указанной строкой (несколь ко раз, если необходимо), пока результирующая строка не достигнет заданной длины. Соответствует MySQL функции RPAD
.
Синтаксис
rightPad('string', 'length'[, 'pad_string'])
Параметры
string
— входная строка, которую необходимо дополнить. String.length
— длина результирующей строки. UInt. Если указанное значение меньше, чем длина входной строки, то входная строка возвращается как есть.pad_string
— строка, используемая для дополнения входной строки. String. Необязательный параметр. Если не указано, то входная строка дополняется пробелами.
Возвращаемое значение
- Результирующая строка заданной длины.
Type: String.
Пример
Запрос:
SELECT rightPad('abc', 7, '*'), rightPad('abc', 7);
Результат:
┌─rightPad('abc', 7, '*')─┬─rightPad('abc', 7)─┐
│ abc**** │ abc │
└─────────────────────────┴────────────────────┘
rightPadUTF8
Дополняет текущую строку слева пробелами или указанной строкой (несколько раз, если необходимо), пока результирующая строка не достигнет заданной длины. Соответствует MySQL функции RPAD
. В отличие от функции rightPad, измеряет длину строки не в байтах, а в кодовых точках Unicode.
Синтаксис
rightPadUTF8('string','length'[, 'pad_string'])
Параметры
string
— входная строка, которую необходимо дополнить. String.length
— длина результирующей строки. UInt. Если указанное значение меньше, чем длина входной строки, то входная строка возвращается как есть.pad_string
— строка, используемая для дополнения входной строки. String. Необязательный параметр. Если не указано, то входная строка дополняется проб елами.
Возвращаемое значение
- Результирующая строка заданной длины.
Type: String.
Пример
Запрос:
SELECT rightPadUTF8('абвг', 7, '*'), rightPadUTF8('абвг', 7);
Результат:
┌─rightPadUTF8('абвг', 7, '*')─┬─rightPadUTF8('абвг', 7)─┐
│ абвг*** │ абвг │
└──────────────────────────────┴─────────────────────────┘
lower, lcase
Переводит ASCII-символы латиницы в строке в нижний регистр.
upper, ucase
Переводит ASCII-символы латиницы в строке в верхний регистр.
lowerUTF8
Переводит строку в нижний регистр, при допущении, что строка содержит набор байтов, представляющий текст в кодировке UTF-8. Не учитывает язык. То есть, для турецкого языка, результат может быть не совсем верным. Если длина UTF-8 последовательности байтов различна для верхнего и нижнего регистра кодовой точки, то для этой кодовой точки результат работы может быть некорректным. Если строка содержит набор байтов, не являющийся UTF-8, то поведение не определено.
upperUTF8
Переводит строку в верхний регистр, при допущении, что строка содержит набор байтов, представляющий текст в кодировке UTF-8. Не у читывает язык. То есть, для турецкого языка, результат может быть не совсем верным. Если длина UTF-8 последовательности байтов различна для верхнего и нижнего регистра кодовой точки, то для этой кодовой точки, результат работы может быть некорректным. Если строка содержит набор байтов, не являющийся UTF-8, то поведение не определено.
isValidUTF8
Возвращает 1, если набор байтов является корректным в кодировке UTF-8, 0 иначе.
toValidUTF8
Заменяет некорректные символы UTF-8 на символ �
(U+FFFD). Все идущие подряд некорректные символы схлопываются в один заменяющий символ.
toValidUTF8(input_string)
Аргументы
input_string
— произвольный набор байтов, представленный как объект типа String.
Возвращаемое значение: Корректная строка UTF-8.
Пример
SELECT toValidUTF8('\x61\xF0\x80\x80\x80b');
┌─toValidUTF8('a����b')─┐
│ a�b │
└───────────────────────┘
repeat
Повторяет строку определенное количество раз и объединяет повторяемые значения в одну строку.
Синоним: REPEAT
.
Синтаксис
repeat(s, n)
Аргументы
Возвращаемое значение
Строка, состоящая из повторений n
раз исходной строки s
. Если n
< 1, то функция вернет пустую строку.
Тип: String
.
Пример
Запрос:
SELECT repeat('abc', 10);
Результат:
┌─repeat('abc', 10)──────────────┐
│ abcabcabcabcabcabcabcabcabcabc │
└────────────────────────────────┘
reverse
Разворачивает строку (как последовательность байтов).
reverseUTF8
Разворачивает последовательность кодовых точек Unicode, при допущении, что строка содержит набор байтов, представляющий текст в кодировке UTF-8. Иначе — что-то делает (не кидает исключение).
format(pattern, s0, s1, ...)
Форматирует константный шаблон со строками, перечисленными в аргументах. pattern
— упрощенн ая версия шаблона в языке Python. Шаблон содержит «заменяющие поля», которые окружены фигурными скобками {}
. Всё, что не содержится в скобках, интерпретируется как обычный текст и просто копируется. Если нужно использовать символ фигурной скобки, можно экранировать двойной скобкой {{ '{{' }}
или {{ '}}' }}
. Имя полей могут быть числами (нумерация с нуля) или пустыми (тогда они интерпретируются как последовательные числа).
SELECT format('{1} {0} {1}', 'World', 'Hello')
┌─format('{1} {0} {1}', 'World', 'Hello')─┐
│ Hello World Hello │
└─────────────────────────────────────────┘
SELECT format('{} {}', 'Hello', 'World')
┌─format('{} {}', 'Hello', 'World')─┐