|
PostgreSQL: like и % |
☑ |
0
грязный
14.01.11
✎
08:37
|
В запросе есть:
... like lower('%'||coalesce(?,'')||'%') ...
Если переменная содержит символ % - то получается фигня. Как сделать, чтобы спецсимволы в переменной не портили запрос?
|
|
1
ДенисЧ
14.01.11
✎
08:41
|
в нормальном сервере для like есть параметр ESCAPE .
|
|
2
грязный
14.01.11
✎
08:42
|
Да, есть. Как только его использовать с переменными, не могу найти в мане.
|
|
3
ДенисЧ
14.01.11
✎
08:44
|
like lower('%'||coalesce(?,'')||'%') escape '!' а в переменной Заменить("%", "!%")
|
|
4
orefkov
14.01.11
✎
08:46
|
за postgres точно не скажу, но в sqlite в соответствии со стандартом можно писать так like lower('%' || coalesce(replace(?, '%', '\%'), '') || '%') escape '\'
|
|
5
ДенисЧ
14.01.11
✎
08:54
|
(4) ну я примерно то же и написал
|
|
6
грязный
14.01.11
✎
09:10
|
(3) теперь невозможен поиск строки содержащей один символ - '!' :)
|
|
7
ДенисЧ
14.01.11
✎
09:11
|
(6) Ищи !!
|
|
8
грязный
14.01.11
✎
09:12
|
(7) ну это понятно, просто пользователь так делать не будет
|
|
9
ДенисЧ
14.01.11
✎
09:12
|
(8) Ты за пользователя сделай. Заменить(стр, "!", "!!")
|
|
10
грязный
14.01.11
✎
09:16
|
(9) уже понял. Спасибо
|
|