You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL中匹配文本特殊字符%的正确查询语句咨询

如何在SQL中匹配包含'%'的行?

这是个很常见的坑——因为%是LIKE语句里的通配符,代表匹配任意长度的字符(包括空字符),所以你写的'%%%'其实等价于'%',自然会返回表中所有行啦。

下面给你几种不同数据库下的正确写法,选适合你的就行:

1. 针对特定数据库的简化写法

  • MySQL/MariaDB:用反斜杠\转义%,把它变成普通字符:
    SELECT * FROM TABLE WHERE VALUE LIKE '%\%%'
    
  • SQL Server/Access:用方括号[]包裹特殊字符,标记它为普通字符:
    SELECT * FROM TABLE WHERE VALUE LIKE '%[%]%'
    
  • Oracle:默认支持反斜杠转义,也可以显式指定转义符:
    SELECT * FROM TABLE WHERE VALUE LIKE '%\%%' ESCAPE '\'
    

2. 通用跨数据库写法(推荐)

如果你的代码需要兼容多种数据库,或者不想记不同数据库的规则,可以用ESCAPE关键字自定义转义符,比如用#:

SELECT * FROM TABLE WHERE VALUE LIKE '%#%%' ESCAPE '#'

这里ESCAPE '#'告诉数据库:“紧跟在#后面的那个%是普通字符,不是通配符哦”。

额外提示

如果你的列里还可能包含另一个通配符_(用来匹配单个字符),也可以用同样的方法转义,比如在MySQL里写'%\_%',或者用通用写法'%#_%' ESCAPE '#'。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:00:31