24 августа Takahiro Itagaki применил патч:
Добавлены строковые функции: concat(), concat_ws(), left(), right()
и reverse().
Pavel Stehule, проверено мной.
Что это за функции?
concat() это просто функциональный аналог оператора || с возможностью обработки нескольких строк за раз:
$ SELECT concat( 'post', 'gres', 'ql' );
concat
------------
postgresql
(1 row)
Очень просто и полезно если надо сделать много конкатенаций.
concat_ws() похожа, но воспринимает первый аргумент как разделитель:
$ SELECT concat_ws( ' ', 'hubert', 'depesz', 'lubaczewski' );
concat_ws
---------------------------
hubert depesz lubaczewski
(1 row)
left() и right() делают одно и то же, но с разных сторон строки:
$ SELECT LEFT( 'postgresql', 4 );
LEFT
------
post
(1 row)
В общем это работает как substring(), но тут есть одна приятная возможность:
$ SELECT LEFT( 'postgresql', -2 );
LEFT
----------
postgres
(1 row)
Это значит, что если параметр длинны отрицательный, то функция будет обрезать abs(length) символов с "другой стороны".
Примеры для right():
$ SELECT RIGHT( 'postgresql', 3 );
RIGHT
-------
sql
(1 row)
$ SELECT RIGHT( 'postgresql', -4 );
RIGHT
--------
gresql
(1 row)
Это всё относительно просто можно было сделать раньше. Но последняя функция, по моему не такому уж скромному мнению, является наиболее важной - reverse(). Её задача тривиальна:
$ SELECT reverse( 'postgresql' );
reverse
------------
lqsergtsop
(1 row)
Но то, что она в ядре PostgreSQL означает что мы теперь можем сделать быстрый (индексный поиск) с условием вида LIKE '%something' ('%' в начале!). Техника для этого была описана ранее, но тогда небыло быстрой reverse().
No comments:
Post a Comment