2017-01-26 2 views
2

, если у меня есть столбец с некоторыми значениями, которые начинаются с «%», как это:SQL - Как использовать подстановочные знаки в LIKE как обычный символ

[ID]-----[VALUES] 
1--------Amount 
2--------Percentage 
3--------%Amount 
4--------%Percentage 

как я могу иметь только эти две строки с " выберите»запрос ?:

[ID]-----[VALUES] 
3--------%Amount 
4--------%Percentage 

Я попробовал эти вопросы, но они не работают:

select * from TABLE where VALUES like '[%]%' 
select * from TABLE where VALUES like '\%%' 

Я знаю, что в Java, C и другие ЛА nguages, то забой \ позволяют использовать весёлый характер, как нормальный, как:

var s = "I called him and he sad: \"Hi, there!\""; 

Существует аналогичный характер/функция, сделать это в SQL?
Все ответы будут оценены, спасибо, что прочитали вопрос!

+1

'выберите * из таблицы, где такие значения, как '\ %%' 'работает для меня ... – Jerrad

+0

Может быть, вы могли бы сделать заменить первый ..... EG WHERE Replace (значения,«% ',' # ') LIKE' #% ' – AntDC

+0

Существует опция MySQL NO_BACKSLASH_ESCAPES, которая может повлиять на ваши результаты. –

ответ

1

попробовать это:

select * from TABLE where VALUES like '%[%]%' 
+0

Это не синтаксис MySQL. –

+0

пропустил тег MySQL, думал SQL Server – puzeledbysql

1

Существует ESCAPE вариант на LIKE:

select * 
from TABLE 
where VALUES like '$%%' escape '$'; 

Все, что после экранирующего символа трактуется как обычный символ. Однако по умолчанию используется обратная косая черта (см. here), поэтому версия с обратной косой чертой должна делать то, что вы хотите.

Конечно, вы также можете использовать регулярное выражение (хотя у него нет надежды использовать индекс).

Примечание: escape является частью стандарта ответа, поэтому он должен работать в любой базе данных.

1

Вы правы, что вам нужен экранирующий символ для этого. В SQL вы должны определить escape-символ.

SELECT * FROM TABLE where VALUES like ESCAPE '!';

Я уверен, что вы можете использовать любой символ, который вы хотите.

Вот ссылка на объяснение Майкрософт, которое более подробно описано.

Microsoft explanation

MySQL Explanation

+0

Просто понял, что это MySQL, а не SQL Server. Однако синтаксис в основном тот же. – GryffensBane

2

Ваш запрос

select * from TABLE where VALUES like '\%%' 

должен работать. Причина этого не в том, что вы можете включить NO_BACKSLASH_ESCAPES, который будет обрабатывать \ как буквенный символ.

Обойти его с помощью LIKE BINARY

select * from TABLE where VALUES like binary '%' 

или экранирующий символ (может быть любой символ, который вы выбираете) спецификации.

select * from TABLE where VALUES like '~%%' escape '~' 
Смежные вопросы