Строка запроса Oracle, включая дефис - PullRequest
1 голос
/ 14 июля 2011

У меня есть запрос, который я запускаю в Oracle, который должен разрешать символы дефиса. Предполагается, что результаты соответствуют точной строке, включая символ дефиса, следующим образом:

SELECT <field> 
  FROM <table> 
 WHERE LOWER(field) LIKE '%-pa%';

Результаты показывают «веб-страницу», «веб-страницу», а также «веб-страницу». Тем не менее, я только хотел бы найти «веб-страницу» и «веб-страницу» в этом случае. Я попытался экранировать символ дефиса с помощью обратной косой черты, но в результате записи не были найдены. Кто-нибудь может дать мне подсказку о том, как заставить это работать?

Ответы [ 2 ]

1 голос
/ 14 июля 2011

Это не мое наблюдение того, как Оракул обращается с дефисами. Вот краткий пример того, что я вижу:

SQL> select * from fb;

ID
----------
Web-Page
Web Page
Web -Page

SQL> select * from fb where lower(id) like '%-pa%';

ID
----------
Web-Page
Web -Page

Вы уверены, что не используете подчеркивание вместо дефиса? Подчеркивание - это подстановочный знак из одного символа.

0 голосов
/ 14 июля 2011

Обычно дефис не нужно экранировать, но вы можете попробовать

select <field> from <table> where lower(field) like '%X-pa%' escape 'X';

вместо 'X', вы можете использовать любой произвольный символ

...