Больше текстовых функций в SQLite
В SQLite есть базовые функции для работы с текстом — instr
, substr
и replace
(и даже trim
в новых версиях). С их помощью можно много чего сделать. Но мне хотелось больше возможностей, как в PostgreSQL, Python или Go.
Поэтому я сделал расширение sqlean-text
, которое содержит 25 строковых функций от slice
, contains
и count
до split_part
, translate
и repeat
.
Примечание. В отличие от других СУБД, добавить расширение в SQLite элементарно. Скачиваете файл, выполняете одну команду — и готово.
Многие функции совместимы с PostgreSQL (доступны под тем же именем и с той же логикой). Это может пригодиться при переносе кода из SQLite в PostgreSQL и обратно.

Некоторые Unicode-специфичные функции вроде upper
и lower
доступны в отдельном расширении unicode. Функции для работы с регулярными выражениями — в расширении regexp.
Подстроки и срезы
text_substring(str, start [,length])
Вырезает фрагмент длиной в length
символов, начиная с позиции start
.
text_slice(str, start [,end])
Вырезает фрагмент с позиции start
включительно до позиции end
не включительно.
text_left(str, length)
Вырезает фрагмент длиной length
символов от начала строки.
text_right(str, length)
Вырезает фрагмент длиной length
символов от конца строки.
Поиск и сравнение
text_index(str, other)
Находит первую позицию, на которой фрагмент other
встречается в исходной строке.
text_last_index(str, other)
Находит последнюю позицию, на которой фрагмент other
встречается в исходной строке.
text_contains(str, other)
Проверяет, встречается ли фрагмент other
в исходной строке.
text_has_prefix(str, other)
Проверяет, начинается ли исходная строка фрагментом other
.
text_has_suffix(str, other)
Проверяет, заканчивается ли исходная строка фрагментом other
.
text_count(str, other)
Считает, сколько раз фрагмент other
встречается в исходной строке.
Разделение и соединение
text_split(str, sep, n)
Бьет строку по разделителю и возвращает n-ю часть.
text_concat(str, ...)
Соединяет строки.
text_join(sep, str, ...)
Соединяет строки через разделитель.
text_repeat(str, count)
Соединяет строку саму с собой указанное количество раз.
Обрезка и дополнение
text_ltrim(str [,chars])
Обрезает указанные символы с начала строки.
text_rtrim(str [,chars])
Обрезает указанные символы с конца строки.
text_trim(str [,chars])
Обрезает указанные символы с начала и конца строки.
text_lpad(str, length [,fill])
Дополняет строку до указанной длины с помощью символов fill
, от начала строки.
text_rpad(str, length [,fill])
Дополняет строку до указанной длины с помощью символов fill
, от конца строки.
Прочие изменения
text_replace(str, old, new [,count])
Заменяет в исходной строке фрагменты old
на фрагменты new
, но не более чем count
раз.
text_translate(str, from, to)
Преобразует каждый символ исходной строки, который найден в наборе from
, в соответствующий символ из набора to
.
text_reverse(str)
Переставляет символы строки в обратном порядке.
Свойства строки
text_length(str)
Возвращает количество символов в строке.
text_size(str)
Возвращает количество байт в строке.
text_bitsize(str)
Возвращает количество бит в строке.
Установка
Скачайте свежий релиз
Подключите в командной строке SQLite (
sqlite.exe
):
sqlite> .load ./text
sqlite> select reverse('hello');
Как установить расширение для IDE, Python и других сценариев.
Документация расширения с подробным описанием.
★ Подписывайтесь на новые заметки.