Как экранировать «остаток от деления» — символ процента?
В коде для PostgreSQL можно увидеть последовательно два символа процента «%%«. Мы понимаем, что это может быть обычная строка с типом text или даже шаблон регулярного выражения. Но!
Всё меняется, когда нам необходимо выполнить динамическую команду PostgreSQL с использованием оператора «остаток от деления», который обозначается одинарным символом процента. Речь идёт про встроенную в PostgreSQL функцию execute().
В динамических запросах, сформированных в виде строки, нужно дополнительно проставлять ещё один символ процента для ожидаемого оператора «остатка от деления». По сути мы занимаемся экранированием одинарного символа процента, который является частью синтаксической конструкции для самого PostgreSQL.
В результате мы получаем что-то подобное:
'case
when (dense_rank() over (order by id desc)) %% 2 = 0 then 0
else 1
end'
Это строковый вид команды для динамического запроса! Не перепутайте.
Информационные ссылки
Официальный сайт WEB-оболочки pgAdmin — https://www.pgadmin.org
Официальный сайт СУБД PostgreSQL — https://www.postgresql.org
Официальный сайт клиента DBeaver для СУБД PostgreSQL — https://dbeaver.io