SQL Server LIKE 插入符号 (^) 代表 NOT 无法按预期工作

Sta*_*low -1 sql t-sql sql-server sql-like

我正在阅读mssqltips上的文章,想尝试正则表达式中的插入符号。我非常了解正则表达式并且经常使用它,尽管在 SQl Server 查询中使用得不多。

对于以下名称列表,我原以为 1) select * from people where name like '%[^m]%;'会返回那些不包含“m”的名称。但事实并非如此。我知道我可以做得到2) select * from people where name not like '%m%';我想要的结果,但我只是困惑为什么 1) 不能按预期工作。

  1. 艾米
  2. 碧玉
  3. 吉姆
  4. 凯瑟琳
  5. 马可
  6. 麦克风
  7. 米切尔

我正在使用 SQL Server 2017,但这里有一个小提琴:

sql小提琴

Aus*_*tin 7

'%[^m]%'对于任何包含不是 的字符的字符串都是如此m。扩展版本将是'%[Any character not m]%'. 由于所有这些字符串都包含 以外的字符m,因此它们是有效结果。

如果您有一个类似 的字符串mmmwhere name like '%[^m]%'则不会返回该行。