@pqgg7nwkd4

Насколько like с процентом на конце эквивалентен between?

LC_COLLATE='ru_RU.UTF8'
Насколько эти два запроса эквивалентны (предположим, что колонка code не содержит символов с кодом больше \uFFFF)?

select * from t where code like '12345%';
select * from t where code BETWEEN '12345' AND '12345' || '\uFFFF'


Все эти пляски из-за проблем индексирования и like '12345%' и COLLATE = ru_RU
  • Вопрос задан
  • 44 просмотра
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
Если задумку реализовать корректно - то эквивалентны. Должны быть. У вас пока не эквивалентны, потому что
melkij=> select '\uFFFF';
 ?column? 
----------
 \uFFFF

Так unicode escapes не пишутся. E'\uFFFF'

Хотя обычно берут штатный text_pattern_ops и like работает нормально.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы