Война с запросом

antonim

Новичок
Война с запросом

занчит вот какие приколы у меня в поиске: вот запись, которую хочу найти:

link_to_file
ru\_\_sf\Warhammer 40k\

вот запросы, по которым находит эту запись:

SELECT *
from book
WHERE link_to_file LIKE ('%u\_\_%')
AND fname LIKE ('Абнетт - Ересь Хоруса 1_ Возвышение Хоруса.fb2%')

SELECT *
from book
WHERE link_to_file LIKE ('%\_\_s%')
AND fname LIKE ('Абнетт - Ересь Хоруса 1_ Возвышение Хоруса.fb2%')

SELECT *
from book
WHERE link_to_file LIKE ('ru\_\_%')
AND fname LIKE ('Абнетт - Ересь Хоруса 1_ Возвышение Хоруса.fb2%')

SELECT *
from book
WHERE link_to_file LIKE ('%\_\_sf\%')
AND fname LIKE ('Абнетт - Ересь Хоруса 1_ Возвышение Хоруса.fb2%')

А вот так не работает:

SELECT *
from book
WHERE link_to_file LIKE ('%u\_\_s%')
AND fname LIKE ('Абнетт - Ересь Хоруса 1_ Возвышение Хоруса.fb2%')



SELECT *
from book
WHERE link_to_file LIKE ('%sf\W%')
AND fname LIKE ('Абнетт - Ересь Хоруса 1_ Возвышение Хоруса.fb2%')

ну и так конечно тоже не работает:



SELECT *
from book
WHERE link_to_file LIKE ('ru\_\_sf\Warhammer 40k\%')
AND fname LIKE ('Абнетт - Ересь Хоруса 1_ Возвышение Хоруса.fb2%')
 

Gas

может по одной?
слеш и _ - спец.символы, экранируй

упс, проглядел что это постгрес, но может там похожая ситуация :)
 

antonim

Новичок
вобщем сначала хотел найти вот так


SELECT *
from book
WHERE link_to_file LIKE ('ru\_\_sf\Warhammer 40k\%')
AND fname LIKE ('Абнетт - Ересь Хоруса 1_ Возвышение Хоруса.fb2%')

не вышло потом подумал про экранирование и сделал вот так:


SELECT *
from book
WHERE link_to_file LIKE ('ru\_\_sf\Warhammer 40k%')
AND fname LIKE ('Абнетт - Ересь Хоруса 1_ Возвышение Хоруса.fb2%')

Тоже не получилось потом начал потихоньку удалять по одному сивмолу пока не дошел до момента:

SELECT *
from book
WHERE link_to_file LIKE ('ru\_\_%')
AND fname LIKE ('Абнетт - Ересь Хоруса 1_ Возвышение Хоруса.fb2%')

вот так зараотало, но самое интересное то, что если сделать 'ru\_\_s%' то не работает, а если убрать "ru" и сделать '%\_\_s%' то работать будет. так же будет работать '%sf\%' и не будет '%sf\W%'. В общем я в потерях....

если кто сталкивался с таким подскажите плз.
 

Gas

может по одной?
из какой-то статьи по постгресу
To match a literal underscore or percent sign without matching other characters, the respective character in pattern must be preceded by the escape character. The default escape character is the backslash but a different one may be selected by using the ESCAPE clause. To match the escape character itself, write two escape characters.
 
Сверху