Spec-Zone.ru › DuckDB

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

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

В этом разделе описаны функции и операторы для проверки и обработки STRING значений.

Имя Описание
string ^@ search_string Возвращает true, если string начинается с search_string.
string || string Конкатенация двух строк. Любой NULL-вход приводит к NULL. Смотрите также concat(string, ...).
string[index] Извлечение одного символа по (1-основанному) индексу.
string[begin:end] Извлечение строки с использованием правил срезов, см. срез.
string LIKE target Возвращает true, если string соответствует спецификатору like (см. Сопоставление с образцом).
string SIMILAR TO regex Возвращает true, если string соответствует regex; идентично regexp_full_match (см. Сопоставление с образцом).
array_extract(list, index) Извлечение одного символа по (1-основанному) индексу.
array_slice(list, begin, end) Извлечение строки с использованием правил срезов. Допускаются отрицательные значения.
ascii(string) Возвращает целое число, представляющее код Unicode первого символа string.
bar(x, min, max[, width]) Отображает полосу, ширина которой пропорциональна (x - min) и равна width символам, когда x = max. width по умолчанию равно 80.
bit_length(string) Количество бит в строке.
chr(x) Возвращает символ, соответствующий значению кода ASCII или коду Unicode.
concat_ws(separator, string, ...) Конкатенация многих строк, разделенных separator. NULL-входы пропускаются.
concat(string, ...) Конкатенация многих строк. NULL-входы пропускаются. Смотрите также string || string.
contains(string, search_string) Возвращает true, если search_string найдена в string.
ends_with(string, search_string) Возвращает true, если string заканчивается на search_string.
format_bytes(bytes) Преобразует байты в удобочитаемое представление с использованием единиц, основанных на степенях 2 (KiB, MiB, GiB и т. д.).
format(format, parameters, ...) Форматирование строки с использованием синтаксиса fmt.
from_base64(string) Преобразование строки в формате base64 в строку символов.
greatest(x1, x2, ...) Выбор наибольшего значения с использованием лексикографического порядка. Обратите внимание, что строчные символы считаются «большими», чем прописные, и сортировки не поддерживаются.
hash(value) Возвращает UBIGINT с хешем value.
ilike_escape(string, like_specifier, escape_character) Возвращает true, если string соответствует like_specifier (см. Сопоставление с образцом) с учетом регистра. escape_character используется для поиска символов-масок в string.
instr(string, search_string) Возвращает позицию первого вхождения search_string в string, считая с 1. Возвращает 0, если совпадение не найдено.
least(x1, x2, ...) Выбор наименьшего значения с использованием лексикографического порядка. Обратите внимание, что прописные символы считаются «меньшими», чем строчные, и сортировки не поддерживаются.
left_grapheme(string, count) Извлечение левых графических кластеров.
left(string, count) Извлечение левых count символов.
length_grapheme(string) Количество графических кластеров в string.
length(string) Количество символов в string.
like_escape(string, like_specifier, escape_character) Возвращает true, если string соответствует like_specifier (см. Сопоставление с образцом) с учетом регистра. escape_character используется для поиска символов-масок в string.
lower(string) Преобразовать string в строчные буквы.
lpad(string, count, character) Заполняет string символом слева до достижения count символов.
ltrim(string, characters) Удаляет любые вхождения указанных characters из левой части string.
ltrim(string) Удаляет пробелы слева от string.
md5(string) Возвращает хеш MD5 string в виде VARCHAR.
md5_number(string) Возвращает хеш MD5 string в виде HUGEINT.
md5_number_lower(string) Возвращает нижние 64 бита хеша MD5 string в виде BIGINT.
md5_number_higher(string) Возвращает верхние 64 бита хеша MD5 string в виде BIGINT.
nfc_normalize(string) Преобразование строки в Unicode NFC нормализованную строку. Полезно для сравнений и упорядочения, если данные текста смешаны между NFC нормализованными и ненормализованными.
not_ilike_escape(string, like_specifier, escape_character) Возвращает false, если string соответствует like_specifier (см. Сопоставление с образцом) без учета регистра. escape_character используется для поиска символов-масок в string.
not_like_escape(string, like_specifier, escape_character) Возвращает false, если string соответствует like_specifier (см. Сопоставление с образцом) с учетом регистра. escape_character используется для поиска символов-масок в string.
ord(string) Возвращает код ASCII левого символа в строке.
parse_dirname(path, separator) Возвращает имя верхнего уровня каталога из заданного пути. separator варианты: system, both_slash (по умолчанию), forward_slash, backslash.
parse_dirpath(path, separator) Возвращает начальную часть пути (имя пути до последнего слеша), аналогично функции Python's os.path.dirname. separator варианты: system, both_slash (по умолчанию), forward_slash, backslash.
parse_filename(path, trim_extension, separator) Возвращает последнюю часть пути, аналогично функции Python os.path.basename. Если trim_extension равно true, расширение файла будет удалено (по умолчанию false). Доступные опции: system, both_slash (по умолчанию), forward_slash, backslash.
parse_path(path, separator) Возвращает список компонентов пути (каталоги и имя файла), аналогично функции Python pathlib.parts. Доступные опции: system, both_slash (по умолчанию), forward_slash, backslash.
position(search_string IN string) Возвращает позицию первого вхождения search_string в string, считая с 1. Возвращает 0, если совпадения не найдено.
printf(format, parameters...) Форматирует string, используя синтаксис printf.
read_text(source) Возвращает содержимое из source (имя файла, список файлов или шаблон glob) в виде VARCHAR. Сначала проверяется, что содержимое файла является валидным UTF-8. Если read_text пытается прочитать файл с невалидным UTF-8, выбрасывается ошибка, предлагающая использовать read_blob вместо этого. Подробнее см. read_text руководство.
regexp_escape(string) Экранирует специальные символы, чтобы преобразовать string в регулярное выражение, аналогично функции Python re.escape.
regexp_extract(string, pattern[, group = 0]) Если string содержит регулярное выражение pattern, возвращает захваченную группу, указанную необязательным параметром group (см. Сопоставление шаблонов).
regexp_extract(string, pattern, name_list) Если string содержит регулярное выражение pattern, возвращает захваченные группы в структуре с соответствующими именами из name_list (см. Сопоставление шаблонов).
regexp_extract_all(string, regex[, group = 0]) Разбивает string по regex и извлекает все вхождения group.
regexp_full_match(string, regex) Возвращает true, если весь string соответствует регулярному выражению regex (см. Сопоставление шаблонов).
regexp_matches(string, pattern) Возвращает true, если string содержит регулярное выражение pattern, false в противном случае (см. Сопоставление шаблонов).
regexp_replace(string, pattern, replacement) Если string содержит регулярное выражение pattern, заменяет соответствующую часть на replacement (см. Сопоставление шаблонов).
regexp_split_to_array(string, regex) Разбивает string по regex.
regexp_split_to_table(string, regex) Разбивает string по regex и возвращает строку для каждой части.
repeat(string, count) Повторяет string count раз.
replace(string, source, target) Заменяет все вхождения source на target в string.
reverse(string) Обращает string.
right_grapheme(string, count) Извлекает правые count графемные кластеры.
right(string, count) Извлекает правые count символы.
rpad(string, count, character) Заполняет string символом справа до count символов.
rtrim(string, characters) Удаляет все вхождения указанных characters символов справа от string.
rtrim(string) Удаляет все пробелы справа от string.
sha256(value) Возвращает строку с хэшем SHA-256 value.
split_part(string, separator, index) Разбивает string по separator и возвращает данные по (индексу 1) index в списке. Если индекс index выходит за границы списка, возвращает пустую строку (для соответствия поведению PostgreSQL).
starts_with(string, search_string) Возвращает true, если string начинается с search_string.
str_split_regex(string, regex) Разбивает string по regex.
string_split_regex(string, regex) Разбивает string по regex.
string_split(string, separator) Разбивает string по separator.
strip_accents(string) Удаляет удаляет знаки ударения из string.
strlen(string) Количество байтов в string.
strpos(string, search_string) Возвращает позицию первого вхождения search_string в string, считая с 1. Возвращает 0, если совпадения не найдено.
substring(string, start, length) Извлекает подстроку из length символов, начиная с символа start. Обратите внимание, что значение start, равное 1, ссылается на first символ строки.
substring_grapheme(string, start, length) Извлекает подстроку из length графемных кластеров, начиная с символа start. Обратите внимание, что значение start, равное 1, ссылается на first символ строки.
to_base64(blob) Преобразует blob в строку, закодированную в base64.
trim(string, characters) Удаляет все вхождения указанных characters символов с обеих сторон string.
trim(string) Удаляет все пробелы с обеих сторон string.
unicode(string) Возвращает код Юникода первого символа string.
upper(string) Преобразует string в верхний регистр.

string ^@ search_string

Описание Возвращает true, если string начинается с search_string.
Пример 'abc' ^@ 'a'
Результат true
Псевдоним starts_with

string || string

Описание Объединить две строки. Любой NULL вход приводит к NULL. См. также concat(string, ...).
Пример 'Duck' || 'DB'
Результат DuckDB

string[index]

Описание Извлечь один символ, используя индекс (с началом от 1).
Пример 'DuckDB'[4]
Результат k
Псевдоним array_extract

string[begin:end]

Описание Извлечь строку, используя соглашения о срезах, подобные Python. Отсутствующие begin или end аргументы интерпретируются как начало или конец списка соответственно. Допускаются отрицательные значения.
Пример 'DuckDB'[:4]
Результат Duck
Псевдоним array_slice

Дополнительные примеры:

SELECT
    'abcdefghi' AS str,
    str[3],    -- get char at position 3, 'c'
    str[3:5],  -- substring from position 3 up to and including position 5, 'cde'
    str[6:],   -- substring from position 6 till the end, 'fghi'
    str[:3],   -- substring from the start up to and including position 3, 'abc'
    str[3:-4], -- substring from positio 3 up to and including the 4th position from the end, 'cdef'
;

string LIKE target

Описание Возвращает true, если string соответствует спецификатору подобности (см. Сопоставление с образцом).
Пример 'hello' LIKE '%lo'
Результат true

string SIMILAR TO regex

Описание Возвращает true, если string соответствует regex; идентично regexp_full_match (см. Сопоставление с образцом)
Пример 'hello' SIMILAR TO 'l+'
Результат false

array_extract(list, index)

Описание Извлечь один символ, используя индекс (с началом от 1).
Пример array_extract('DuckDB', 2)
Результат u
Псевдонимы list_element, list_extract

array_slice(list, begin, end)

Описание Извлечь строку, используя соглашения о срезах (как в Python). Допускаются отрицательные значения.
Пример 1 array_slice('DuckDB', 3, 4)
Результат ck
Пример 2 array_slice('DuckDB', 3, NULL)
Результат NULL
Пример 3 array_slice('DuckDB', 0, -3)
Результат Duck

ascii(string)

Описание Возвращает целое число, представляющее код Юникода первого символа string.
Пример ascii('Ω')
Результат 937

bar(x, min, max[, width])

Описание Отобразить полосу, ширина которой пропорциональна (x - min) и равна width символам, когда x = max. width по умолчанию 80.
Пример bar(5, 0, 20, 10)
Результат ██▌

bit_length(string)

Описание Количество битов в строке.
Пример bit_length('abc')
Результат 24

chr(x)

Описание Возвращает символ, соответствующий значению кода ASCII или коду Юникода.
Пример chr(65)
Результат A

concat_ws(separator, string, ...)

Описание Объединить несколько строк, разделенных separator. NULL входы пропускаются.
Пример concat_ws(', ', 'Banana', 'Apple', NULL, 'Melon')
Результат Banana, Apple, Melon

concat(string, ...)

Описание Объединить несколько строк. NULL входы пропускаются. См. также string || string.
Пример concat('Hello', ' ', NULL, 'World')
Результат Hello World

contains(string, search_string)

Описание Возвращает true, если search_string найдено в string.
Пример contains('abc', 'a')
Результат true

ends_with(string, search_string)

Описание Возвращает true, если string заканчивается на search_string.
Пример ends_with('abc', 'c')
Результат true
Псевдоним suffix

format_bytes(bytes)

Описание Преобразует байты в удобочитаемое представление, используя единицы, основанные на степенях 2 (KiB, MiB, GiB и т.д.).
Пример format_bytes(16384)
Результат 16.0 KiB

format(format, parameters, ...)

Описание Форматирует строку, используя синтаксис fmt.
Пример format('Benchmark "{}" took {} seconds', 'CSV', 42)
Результат Benchmark "CSV" took 42 seconds

from_base64(string)

Описание Преобразовать строку, закодированную в base64, в строку символов.
Пример from_base64('QQ==')
Результат 'A'

greatest(x1, x2, ...)

Описание Выбирает наибольшее значение, используя лексикографическое упорядочение. Обратите внимание, что строчные буквы считаются «больше», чем прописные, и сортировки не поддерживаются.
Пример greatest('abc', 'bcd', 'cde', 'EFG')
Результат 'cde'

hash(value)

Описание Возвращает UBIGINT с хешем value.
Пример hash('🦆')
Результат 2595805878642663834

ilike_escape(string, like_specifier, escape_character)

Описание Возвращает true, если string соответствует like_specifier (см. Сопоставление с образцом) с использованием нечувствительного к регистру сопоставления. escape_character используется для поиска символов подстановок в string.
Пример ilike_escape('A%c', 'a$%C', '$')
Результат true

instr(string, search_string)

Описание Возвращает позицию первого вхождения search_string в string, считая с 1. Возвращает 0, если совпадение не найдено.
Пример instr('test test', 'es')
Результат 2

least(x1, x2, ...)

Описание Выбирает наименьшее значение с использованием лексикографического порядка. Обратите внимание, что заглавные буквы считаются «меньше», чем строчные, и правила сопоставления не поддерживаются.
Пример least('abc', 'BCD', 'cde', 'EFG')
Результат 'BCD'

left_grapheme(string, count)

Описание Извлечение лексически первых кластеров графем.
Пример left_grapheme('🤦🏼‍♂️🤦🏽‍♀️', 1)
Результат 🤦🏼‍♂️

left(string, count)

Описание Извлечение лексически первых count символов.
Пример left('Hello🦆', 2)
Результат He

length_grapheme(string)

Описание Количество кластеров графем в string.
Пример length_grapheme('🤦🏼‍♂️🤦🏽‍♀️')
Результат 2

length(string)

Описание Количество символов в string.
Пример length('Hello🦆')
Результат 6

like_escape(string, like_specifier, escape_character)

Описание Возвращает true, если string соответствует like_specifier (см. Сопоставление с образцом) с учётом регистра. escape_character используется для поиска символов-заменителей в string.
Пример like_escape('a%c', 'a$%c', '$')
Результат true

lower(string)

Описание Преобразует string в нижний регистр.
Пример lower('Hello')
Результат hello
Псевдоним lcase

lpad(string, count, character)

Описание Заполняет string символом слева до тех пор, пока оно не будет содержать count символов.
Пример lpad('hello', 8, '>')
Результат >>>hello

ltrim(string, characters)

Описание Удаляет все вхождения любого из characters с левой стороны string.
Пример ltrim('>>>>test<<', '><')
Результат test<<

ltrim(string)

Описание Удаляет все пробелы с левой стороны string. В примере символ ␣ обозначает пробел.
Пример ltrim('␣␣␣␣test␣␣')
Результат test␣␣

md5(string)

Описание Возвращает хэш MD5 string в виде VARCHAR.
Пример md5('123')
Результат 202cb962ac59075b964b07152d234b70

md5_number(string)

Описание Возвращает хэш MD5 string в виде HUGEINT.
Пример md5_number('123')
Результат 149263671248412135425768892945843956768

md5_number_lower(string)

Описание Возвращает хэш MD5 string в виде BIGINT.
Пример md5_number_lower('123')
Результат 8091599832034528150

md5_number_higher(string)

Описание Возвращает хэш MD5 string в виде BIGINT.
Пример md5_number_higher('123')
Результат 6559309979213966368

nfc_normalize(string)

Описание Преобразует строку в нормализованную строку Unicode NFC. Полезно для сравнений и упорядочивания, если текстовые данные смешаны между нормализованными и ненормализованными строками NFC.
Пример nfc_normalize('ardèch')
Результат ardèch

not_ilike_escape(string, like_specifier, escape_character)

Описание Возвращает false, если string соответствует like_specifier (см. Сопоставление с образцом) с учётом регистра. escape_character используется для поиска символов-заменителей в string.
Пример not_ilike_escape('A%c', 'a$%C', '$')
Результат false

not_like_escape(string, like_specifier, escape_character)

Описание Возвращает false, если string соответствует like_specifier (см. Сопоставление с образцом) без учёта регистра. escape_character используется для поиска символов-заменителей в string.
Пример not_like_escape('a%c', 'a$%c', '$')
Результат false

ord(string)

Описание Возвращает код ASCII самого левого символа в строке.
Пример ord('ü')
Результат 252

parse_dirname(path, separator)

Описание Возвращает имя верхнего уровня каталога из заданного пути. Доступные опции: separator, system (по умолчанию), both_slash, forward_slash.
Пример parse_dirname('path/to/file.csv', 'system')
Результат path

parse_dirpath(path, separator)

Описание Возвращает начальную часть пути (имя пути до последнего слэша), аналогично функции Python os.path.dirname. Доступные опции: separator, system (по умолчанию), both_slash, backslash.
Пример parse_dirpath('/path/to/file.csv', 'forward_slash')
Результат /path/to

parse_filename(path, trim_extension, separator)

Описание Возвращает последний компонент пути, аналогично функции Python os.path.basename. Если trim_extension равно true, расширение файла будет удалено (по умолчанию false). Доступные опции: system, both_slash (по умолчанию), forward_slash, backslash.
Пример parse_filename('path/to/file.csv', true, 'system')
Результат file

parse_path(path, separator)

Описание Возвращает список компонентов (каталогов и файлов) в пути, аналогично функции Python's pathlib.parts. separator параметры: system, both_slash (по умолчанию), forward_slash, backslash.
Пример parse_path('/path/to/file.csv', 'system')
Результат [/, path, to, file.csv]

position(search_string IN string)

Описание Возвращает позицию первого вхождения search_string в string, считая с 1. Возвращает 0, если совпадение не найдено.
Пример position('b' IN 'abc')
Результат 2

printf(format, parameters...)

Описание Форматирует string, используя синтаксис printf.
Пример printf('Benchmark "%s" took %d seconds', 'CSV', 42)
Результат Benchmark "CSV" took 42 seconds

read_text(source)

Описание Возвращает содержимое source (имя файла, список имен файлов или шаблон glob) в виде VARCHAR. Сначала проверяется, что содержимое файла является валидным UTF-8. Если read_text пытается прочитать файл с невалидным UTF-8, выбрасывается ошибка, предлагающая использовать read_blob. Дополнительные сведения см. в руководстве read_text.
Пример read_text('hello.txt')
Результат hello\n

regexp_escape(string)

Описание Экранирует специальные символы, чтобы преобразовать string в регулярное выражение, аналогично функции Python's re.escape.
Пример regexp_escape('http://d.org')
Результат http\:\/\/d\.org

regexp_extract(string, pattern[, group = 0])

Описание Если string содержит регулярное выражение pattern, возвращает захваченную группу, указанную необязательным параметром group (см. Сопоставление с образцом).
Пример regexp_extract('hello_world', '([a-z ]+)_?', 1)
Результат hello

regexp_extract(string, pattern, name_list)

Описание Если string содержит регулярное выражение pattern, возвращает захваченные группы в структуре с соответствующими именами из name_list (см. Сопоставление с образцом).
Пример regexp_extract('2023-04-15', '(\d+)-(\d+)-(\d+)', ['y', 'm', 'd'])
Результат {'y':'2023', 'm':'04', 'd':'15'}

regexp_extract_all(string, regex[, group = 0])

Описание Разделяет string по regex и извлекает все вхождения group.
Пример regexp_extract_all('hello_world', '([a-z ]+)_?', 1)
Результат [hello, world]

regexp_full_match(string, regex)

Описание Возвращает true, если все string соответствует regex (см. Сопоставление с образцом).
Пример regexp_full_match('anabanana', '(an)')
Результат false

regexp_matches(string, pattern)

Описание Возвращает true, если string содержит регулярное выражение pattern, false в противном случае (см. Сопоставление с образцом).
Пример regexp_matches('anabanana', '(an)')
Результат true

regexp_replace(string, pattern, replacement)

Описание Если string содержит регулярное выражение pattern, заменяет соответствующую часть на replacement (см. Сопоставление с образцом).
Пример regexp_replace('hello', '[lo]', '-')
Результат he-lo

regexp_split_to_array(string, regex)

Описание Разделяет string по regex.
Пример regexp_split_to_array('hello world; 42', ';? ')
Результат ['hello', 'world', '42']
Псевдонимы string_split_regex, str_split_regex

regexp_split_to_table(string, regex)

Описание Разделяет string по regex и возвращает строку для каждой части.
Пример regexp_split_to_table('hello world; 42', ';? ')
Результат Две строки: 'hello', 'world'

repeat(string, count)

Описание Повторяет string count количество раз.
Пример repeat('A', 5)
Результат AAAAA

replace(string, source, target)

Описание Заменяет все вхождения source на target в string.
Пример replace('hello', 'l', '-')
Результат he--o

reverse(string)

Описание Обращает string.
Пример reverse('hello')
Результат olleh

right_grapheme(string, count)

Описание Извлекает правые count графические кластеры.
Пример right_grapheme('🤦🏼‍♂️🤦🏽‍♀️', 1)
Результат 🤦🏽‍♀️

right(string, count)

Описание Извлекает правые count символы.
Пример right('Hello🦆', 3)
Результат lo🦆

rpad(string, count, character)

Описание Добавляет string справа символы до тех пор, пока не будет count символов.
Пример rpad('hello', 10, '<')
Результат hello<<<<<

rtrim(string, characters)

Описание Удаляет все вхождения указанных characters символов из правой части string.
Пример rtrim('>>>>test<<', '><')
Результат >>>>test

rtrim(string)

Описание Удаляет все пробелы из правой части string. В примере символ ␣ обозначает пробел.
Пример rtrim('␣␣␣␣test␣␣')
Результат ␣␣␣␣test

sha256(value)

END_OF_DOCUMENT_MARKER
Описание Возвращает VARCHAR с хешем SHA-256 value.
Пример sha256('🦆')
Результат d7a5c5e0d1d94c32218539e7e47d4ba9c3c7b77d61332fb60d633dde89e473fb

split_part(string, separator, index)

Описание Разделяет string по separator и возвращает данные в (1-индексируемой) index списка. Если index находится вне границ списка, возвращает пустую строку (для соответствия поведению PostgreSQL).
Пример split_part('a;b;c', ';', 2)
Результат b

starts_with(string, search_string)

Описание Возвращает true, если string начинается с search_string.
Пример starts_with('abc', 'a')
Результат true

str_split_regex(string, regex)

Описание Разделяет string по regex.
Пример str_split_regex('hello world; 42', ';? ')
Результат ['hello', 'world', '42']
Псевдонимы string_split_regex, regexp_split_to_array

string_split_regex(string, regex)

Описание Разделяет string по regex.
Пример string_split_regex('hello world; 42', ';? ')
Результат ['hello', 'world', '42']
Псевдонимы str_split_regex, regexp_split_to_array

string_split(string, separator)

Описание Разделяет string по separator.
Пример string_split('hello world', ' ')
Результат ['hello', 'world']
Псевдонимы str_split, string_to_array

strip_accents(string)

Описание Удаляет знаки ударения из string.
Пример strip_accents('mühleisen')
Результат muhleisen

strlen(string)

Описание Количество байтов в string.
Пример strlen('🦆')
Результат 4

strpos(string, search_string)

Описание Возвращает позицию первого вхождения search_string в string, считая с 1. Возвращает 0, если совпадение не найдено.
Пример strpos('test test', 'es')
Результат 2
Псевдоним instr

substring(string, start, length)

Описание Извлечение подстроки из length символов, начиная с символа start. Обратите внимание, что значение start равное 1 относится к first символу строки.
Пример substring('Hello', 2, 2)
Результат el
Псевдоним substr

substring_grapheme(string, start, length)

Описание Извлечение подстроки из length графических кластеров, начиная с символа start. Обратите внимание, что значение start равное 1 относится к first символу строки.
Пример substring_grapheme('🦆🤦🏼‍♂️🤦🏽‍♀️🦆', 3, 2)
Результат 🤦🏽‍♀️🦆

to_base64(blob)

Описание Преобразование blob в строку, закодированную в base64.
Пример to_base64('A'::blob)
Результат QQ==
Псевдоним base64

trim(string, characters)

Описание Удаляет все вхождения любых из characters символов с обеих сторон string.
Пример trim('>>>>test<<', '><')
Результат test

trim(string)

Описание Удаляет пробелы с обеих сторон string.
Пример trim(' test ')
Результат test

unicode(string)

Описание Возвращает код Юникода первого символа string. Возвращает -1, когда string пуста, и NULL, когда string равна NULL.
Пример [unicode('âbcd'), unicode('â'), unicode(''), unicode(NULL)]
Результат [226, 226, -1, NULL]

upper(string)

Описание Преобразует string в верхний регистр.
Пример upper('Hello')
Результат HELLO
Псевдоним ucase

Функции сходства текста

Эти функции используются для измерения сходства двух строк с использованием различных мер сходства.

Имя Описание
damerau_levenshtein(s1, s2) Расширение расстояния Левенштейна, включающее транспозицию смежных символов в качестве допустимой операции редактирования. Другими словами, минимальное количество операций редактирования (вставки, удаления, замены или транспозиции), необходимых для изменения одной строки на другую. Символы с разным регистром (например, a и A) считаются разными.
editdist3(s1, s2) Псевдоним для levenshtein для совместимости с SQLite. Минимальное количество редактирований отдельных символов (вставка, удаление или замена), необходимых для изменения одной строки на другую. Символы с разным регистром (например, a и A) считаются разными.
hamming(s1, s2) Расстояние Хэмминга между двумя строками, т.е. количество позиций с разными символами для двух строк равной длины. Строки должны быть одинаковой длины. Символы с разным регистром (например, a и A) считаются разными.
jaccard(s1, s2) Коэффициент Жаккара между двумя строками. Символы с разным регистром (например, a и A) считаются разными. Возвращает число от 0 до 1.
jaro_similarity(s1, s2) Подобие Жара между двумя строками. Символы с разным регистром (например, a и A) считаются разными. Возвращает число от 0 до 1.
jaro_winkler_similarity(s1, s2) Подобие Жара-Винклера между двумя строками. Символы с разным регистром (например, a и A) считаются разными. Возвращает число от 0 до 1.
levenshtein(s1, s2) Минимальное количество редактирований отдельных символов (вставка, удаление или замена), необходимых для изменения одной строки на другую. Символы с разным регистром (например, a и A) считаются разными.
mismatches(s1, s2) Псевдоним для hamming(s1, s2). Количество позиций с разными символами для двух строк одинаковой длины. Строки должны быть одинаковой длины. Символы с разным регистром (например, a и A) считаются разными.

damerau_levenshtein(s1, s2)

Описание Расширение расстояния Левенштейна, включающее транспозицию смежных символов в качестве допустимой операции редактирования. Другими словами, минимальное количество операций редактирования (вставки, удаления, замены или транспозиции), необходимых для изменения одной строки на другую. Символы с разным регистром (например, a и A) считаются разными.
Пример damerau_levenshtein('duckdb', 'udckbd')
Результат 2

editdist3(s1, s2)

Описание Псевдоним для levenshtein для совместимости с SQLite. Минимальное количество редактирований отдельных символов (вставка, удаление или замена), необходимых для изменения одной строки на другую. Символы с разным регистром (например, a и A) считаются разными.
Пример editdist3('duck', 'db')
Результат 3

hamming(s1, s2)

Описание Расстояние Хэмминга между двумя строками, т.е. количество позиций с разными символами для двух строк равной длины. Строки должны быть одинаковой длины. Символы с разным регистром (например, a и A) считаются разными.
Пример hamming('duck', 'luck')
Результат 1

jaccard(s1, s2)

Описание Коэффициент Жаккара между двумя строками. Символы с разным регистром (например, a и A) считаются разными. Возвращает число от 0 до 1.
Пример jaccard('duck', 'luck')
Результат 0.6

jaro_similarity(s1, s2)

Описание Подобие Жара между двумя строками. Символы с разным регистром (например, a и A) считаются разными. Возвращает число от 0 до 1.
Пример jaro_similarity('duck', 'duckdb')
Результат 0.88

jaro_winkler_similarity(s1, s2)

Описание Подобие Жара-Винклера между двумя строками. Символы с разным регистром (например, a и A) считаются разными. Возвращает число от 0 до 1.
Пример jaro_winkler_similarity('duck', 'duckdb')
Результат 0.93

levenshtein(s1, s2)

Описание Минимальное количество редактирований отдельных символов (вставка, удаление или замена), необходимых для изменения одной строки на другую. Символы с разным регистром (например, a и A) считаются разными.
Пример levenshtein('duck', 'db')
Результат 3

mismatches(s1, s2)

Описание Псевдоним для hamming(s1, s2). Количество позиций с разными символами для двух строк одинаковой длины. Строки должны быть одинаковой длины. Символы с разным регистром (например, a и A) считаются разными.
Пример mismatches('duck', 'luck')
Результат 1

Форматировщики

fmt Синтаксис

Функция format(format, parameters...) форматирует строки, частично следуя синтаксису {fmt} открытой библиотеки форматирования.

Форматирование без дополнительных параметров:

SELECT format('Hello world'); -- Hello world

Форматирование строки с использованием {}:

SELECT format('The answer is {}', 42); -- The answer is 42

Форматирование строки с использованием позиционных аргументов:

SELECT format('I''d rather be {1} than {0}.', 'right', 'happy'); -- I'd rather be happy than right.

Спецификаторы форматирования

Спецификатор Описание Пример
{:d} целое число 123456
{:E} научная запись 3.141593E+00
{:f} вещественное число с плавающей точкой 4.560000
{:o} восьмеричное представление 361100
{:s} строка asd
{:x} шестнадцатеричное представление 1e240
{:tX} целое число, X — разделитель тысяч 123 456

Типы форматирования

Целые числа:

SELECT format('{} + {} = {}', 3, 5, 3 + 5); -- 3 + 5 = 8

Булевы значения:

SELECT format('{} != {}', true, false); -- true != false

Форматирование значений даты и времени:

SELECT format('{}', DATE '1992-01-01'); -- 1992-01-01
SELECT format('{}', TIME '12:01:00'); -- 12:01:00
SELECT format('{}', TIMESTAMP '1992-01-01 12:01:00'); -- 1992-01-01 12:01:00

Форматирование BLOB:

SELECT format('{}', BLOB '\x00hello'); -- \x00hello

Дополнение целых чисел нулями:

SELECT format('{:04d}', 33); -- 0033

Создание временных меток из целых чисел:

SELECT format('{:02d}:{:02d}:{:02d} {}', 12, 3, 16, 'AM'); -- 12:03:16 AM

Преобразование в шестнадцатеричное представление:

SELECT format('{:x}', 123_456_789); -- 75bcd15

Преобразование в двоичное представление:

SELECT format('{:b}', 123_456_789); -- 111010110111100110100010101

Вывод чисел с разделителями тысяч

Целые числа:

SELECT format('{:,}',  123_456_789); -- 123,456,789
SELECT format('{:t.}', 123_456_789); -- 123.456.789
SELECT format('{:''}', 123_456_789); -- 123'456'789
SELECT format('{:_}',  123_456_789); -- 123_456_789
SELECT format('{:t }', 123_456_789); -- 123 456 789
SELECT format('{:tX}', 123_456_789); -- 123X456X789

Вещественные числа (float, double и decimal):

SELECT format('{:,f}',    123456.789); -- 123,456.78900
SELECT format('{:,.2f}',  123456.789); -- 123,456.79
SELECT format('{:t..2f}', 123456.789); -- 123.456,79

printf Синтаксис

Функция printf(format, parameters...) форматирует строки, используя printf синтаксис.

Форматирование без дополнительных параметров:

SELECT printf('Hello world');
Hello world

Форматирование строки с использованием аргументов в заданном порядке:

SELECT printf('The answer to %s is %d', 'life', 42);
The answer to life is 42

Форматирование строки с использованием позиционных аргументов %position$formatter, например, второй параметр в виде строки кодируется как %2$s:

SELECT printf('I''d rather be %2$s than %1$s.', 'right', 'happy');
I'd rather be happy than right.

Спецификаторы формата

Спецификатор Описание Пример
%c код символа в символ a
%d целое число 123456
%Xd целое число с разделителями тысяч X от ,, ., '', _ 123_456
%E научная запись 3.141593E+00
%f вещественное число с плавающей точкой 4.560000
%hd целое число 123456
%hhd целое число 123456
%lld целое число 123456
%o восьмеричное число 361100
%s строка asd
%x шестнадцатеричное число 1e240

Типы форматирования

Целые числа:

SELECT printf('%d + %d = %d', 3, 5, 3 + 5); -- 3 + 5 = 8

Булевы значения:

SELECT printf('%s != %s', true, false); -- true != false

Форматирование значений дат и времени:

SELECT printf('%s', DATE '1992-01-01'); -- 1992-01-01
SELECT printf('%s', TIME '12:01:00'); -- 12:01:00
SELECT printf('%s', TIMESTAMP '1992-01-01 12:01:00'); -- 1992-01-01 12:01:00

Форматирование BLOB:

SELECT printf('%s', BLOB '\x00hello'); -- \x00hello

Заполнение целых чисел нулями:

SELECT printf('%04d', 33); -- 0033

Создание временных меток из целых чисел:

SELECT printf('%02d:%02d:%02d %s', 12, 3, 16, 'AM'); -- 12:03:16 AM

Преобразование в шестнадцатеричный формат:

SELECT printf('%x', 123_456_789); -- 75bcd15

Преобразование в двоичный формат:

SELECT printf('%b', 123_456_789); -- 111010110111100110100010101

Разделители тысяч

Целые числа:

SELECT printf('%,d',  123_456_789); -- 123,456,789
SELECT printf('%.d',  123_456_789); -- 123.456.789
SELECT printf('%''d', 123_456_789); -- 123'456'789
SELECT printf('%_d',  123_456_789); -- 123_456_789

Вещественные числа (float, double и decimal):

SELECT printf('%,f',   123456.789); -- 123,456.789000
SELECT printf('%,.2f', 123456.789); -- 123,456.79

© Copyright 2018–2024 Stichting DuckDB Foundation
Licensed under the MIT License.
https://duckdb.org/docs/sql/functions/char.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API