Больше текстовых функций в 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 и других сценариев.
Документация расширения с подробным описанием.
★ Подписывайтесь на новые заметки.