You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

SQL Server 2012中LIKE语法含%字符的查询问题求助

解决SQL Server中查询包含'8%'字符串的问题

我来帮你搞定这个问题!你遇到的问题是因为对LIKE语句里的通配符规则理解有偏差,咱们一步步来修正。

首先,你原来的查询WHERE [Notes] like '%[8%]%'为什么不对?因为在SQL Server的LIKE语法里,方括号[]是用来匹配单个字符的,里面的内容代表可选的单个字符集合——所以[8%]的意思是匹配一个'8'或者一个'%',整个表达式就会匹配任何包含'8'或者'%'的行,这就是为什么只含'8'的行也被错误筛选出来了。

要准确匹配包含8%这个完整字符串的行,需要把%当成普通字符处理,而不是通配符,这里有两种可靠的写法:

方法1:使用ESCAPE子句指定转义符

可以指定一个自定义的转义字符,把后面的%标记为普通字符,比如用!作为转义符:

WHERE [Notes] LIKE '%8!%%' ESCAPE '!'

这里的逻辑是:

  • 开头的%和结尾的%是通配符,匹配任意长度的字符
  • 8!%里的!告诉SQL Server,后面的%是实际要匹配的字符,不是通配符

方法2:将%放在方括号中

在SQL Server的LIKE语法里,方括号内的%会被视为普通字符,所以可以直接写成:

WHERE [Notes] LIKE '%8[%]%'

这种写法更简洁,8[%]就代表实际的8%字符串,前后的%依然作为通配符匹配任意内容。

你可以任选一种写法测试,都能精准筛选出Notes字段中包含8%的所有行。

内容的提问来源于stack exchange,提问作者user3115933

火山引擎 最新活动