2008-10-13 5 views
0

Мне нужно сделать запрос, который ищет текст с 'Nome% teste \ /' в качестве префикса. Я делаю запрос, используя:Escaping в запросе ILIKE

где «имя» ИЛКИЙ 'Nome a% teste \ /%' ESCAPE 'a' (используя символ эвакуации).

Существует строка, которая соответствует этому, но этот запрос ничего не возвращает. Удаление косой черты ('Nome% teste \'), он работает. Но я не понимаю, почему слэш является проблемой, так как побег по умолчанию - это обратная косая черта , и я изменил ее на 'a' в этом тесте.

Есть что-то, что мне не хватает? (Я консультировался МТФ)

ответ

2

Используйте "ESCAPE" спецификатор

WHERE "name" ILIKE 'Nome ~% teste \\/' ESCAPE '~' 

http://www.postgresql.org/docs/8.2/static/functions-matching.html

Примечание : вам все равно нужно иметь \ дважды для синтаксического анализатора строк.

Без ПОБЕГ вам нужно будет сделать

WHERE "name" ILIKE 'Nome \% test \\\\/' 

(4 \ «ы для представления одного буквенные \)


Спасибо, но я до сих пор оригинальный вопрос с слэш. Поиск с

WHERE "name" ILIKE 'Nome \% test \\\\/%' 

не дают мне результат, в то время как

WHERE "name" ILIKE 'Nome \% test \\\\%' 

(удален слэш, который присутствует в строке) работает, как ожидалось. - Kknd

его возможная ваша строка не имеет буквального «/», как вы указали. возможно, у вас есть нулевой или другой символ пробела между ними. Или, возможно, у вас есть/в другом наборе символов.

Я попытался бы использовать это, чтобы проверить, что возможный сценарий

WHERE "name" ILIKE 'Nome \% ' AND "name" ~* '\\.{1,10}/' 

, который будет возвращать строки, которые/отделенные что-то (но не линии без разделения)

+0

Спасибо, но у меня все еще есть оригинальная проблема с косой чертой. Поиск с WHERE «name» ILIKE 'Nome \% test \\\\ /%' не дает мне результата, тогда как WHERE "name" ILIKE 'Nome \% test \\\\%' (удаляется косая черта, что присутствует в строке) работает как ожидалось. – Kknd 2008-10-13 15:30:13

1

Вы пробовали только с помощью обратной косой черты, чтобы избежать его, как это:

where "name" ILIKE 'Nome \% teste \\\/'; 
+0

Я пытался, но это не работает. – Kknd 2008-10-13 03:25:24