SQL запрос со специальными символами - как обрабатывать? - PullRequest
1 голос
/ 02 февраля 2011

У меня есть несколько имен emp, таких как

  1. Джон, 1
  2. devil's
  3. кукуруза

что-то вроде этого

Теперь, когда я ищу эти имена, я использую

select * from emp where empname like ('john,1,devil's,corn')

Но я не получаю ожидаемые значения также я получаю ошибку, потому что имя emp содержитспециальные символы, такие как, и '.

Может кто-нибудь помочь мне, как решить эту проблему?

Ответы [ 5 ]

5 голосов
/ 02 февраля 2011

Предполагается, что в вашем примере строки 3 дискретных имени

Точное совпадение.вам нужно удвоить кавычки.

select * from emp where
empname IN ('john,1' , 'devil''s', 'corn')

Вы не можете LIKE / IN в SQL Server.

0 голосов
/ 02 февраля 2011

Если вы ищете empname "devil's", тогда я согласен с использованием символа escape, который использовали Sachin и Ratinho.

Однако предложение like используется для чего-то похожего на другое. Например, если вы ищете что-то, что начинается с «дьявола», вы можете использовать

select * from emp where empname like ('devil\'s%')

, что соответствует

devil's peak
devil's beard
devil's

но не

Devil's peak
deviled eggs
devil

Если вы хотите сопоставить empname с «devil's» в середине, тогда вы можете использовать

select * from emp where empname like ('%devil\'s%')
0 голосов
/ 02 февраля 2011
select * from emp where empname like ('john\,1','devil\'s','corn\'') escape '\'

используйте ключевое слово escape , чтобы указать управляющий символ для запроса.

0 голосов
/ 02 февраля 2011

Для большинства версий SQL вам нужно экранировать одинарную кавычку, например.

select * from emp where empname like ('john,1,devil''s,corn')

Кроме того, в приведенном выше примере ищется очень конкретное строковое значение, вам нужно включить * или?в качестве символов подстановки, чтобы искать все empname как дьявола, используйте

select * from emp where empname like '%devil''s%'

Другой пример

select * from emp where empname like 'john,1%'
0 голосов
/ 02 февраля 2011

если вы используете mysql:

select * from emp where empname like ('john,1','devil\'s','corn')
...