Поиск '_' в SQL показывает все записи - PullRequest
0 голосов
/ 16 мая 2018

У меня есть запрос для поиска имени с помощью '_', но он показывает все записи таблицы.Кто-нибудь скажет мне, что не так с моим сценарием.Спасибо.

Есть мой SQL-скрипт:

declare @Name varchar(50)='_'
select *  FROM products WHERE  Name like @Name +'%'

Ответы [ 3 ]

0 голосов
/ 16 мая 2018

Согласно руководству по MySQL, символ "_" является подстановочным знаком при использовании в как оценки, см. https://dev.mysql.com/doc/refman/8.0/en/string-comparison-functions.html

Если вы хотите найти соответствие по первой букве, то, вероятно, влево будет лучше, см. https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_left

0 голосов
/ 16 мая 2018

Чтобы проверить наличие буквенных символов подстановочного знака, перед ним должен быть escape-символ.Например.

\ _ соответствует одному символу _

0 голосов
/ 16 мая 2018

_ - это шаблон, который соответствует любому символу. Вы можете выбрать другого персонажа, чтобы избежать его. Скажи:

WHERE Name like replace(@Name, '_', '$_') + '%' ESCAPE '$'

Это может быть громоздким, поэтому вы можете просто использовать другую логику:

WHERE LEFT(Name, LEN(@Name)) = @Name

К сожалению, эта формулировка предотвращает использование индекса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...