#sql #wildcard
#sql #подстановочный знак
Вопрос:
Итак, вот 2 запроса, которые я написал
select Name from tblEmployees where Name not like '%[! -.]%[ .-]%[! -.]%' order by Name;
select Name from tblEmployees where Name not like '%[a-z]%[ .-]%[a-z]%' order by Name;
удивительно, что оба имеют разные результаты, и еще более удивительным является тот факт, что 1-й запрос показывает больше результатов, чем 2-й..
любые возможные причины, по которым оба запроса не работают одинаково,
Я не думаю, потому что символы tblEmployees
, используемые в именах, имеют какие-либо другие символы, кроме a-z
‘, ''
(пробел) .
и -
.
Я запустил запросы в SOL server management.
Ответ №1:
Это должно быть
[^ -.]
вместо
[! -.]
Комментарии:
1. Следует также отметить, что
space-.
будет соответствовать всем символам междуspace
и.
, точно так же, какa-z
соответствует всем алфавитным символам. (Используя пробел, а не литерал, потому что он не будет правильно форматироваться в комментариях)2. хм, этот пробел- . я пропустил ошибку, и использование ^ сработало, спасибо
3. Можете ли вы сказать, почему! dosent работает, но ^ работает, в w3schools задан синтаксис обоих.
4. Я никогда не видел! используется таким образом, и я не думаю, что какая-либо из крупнейших систем баз данных допускает это.