почему [!charlist1] и [символы, отсутствующие в charlist1] не работают одинаково

#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. Я никогда не видел! используется таким образом, и я не думаю, что какая-либо из крупнейших систем баз данных допускает это.