如何在SQL表中查询被单引号包裹的指定字符串?
解决SQL中查询单引号包裹字符串的语法问题
你的SQL语句SELECT id From TestTable WHERE Test LIKE '%'test'%'会触发语法错误,原因是SQL里单引号是字符串的边界标记,直接在字符串内部写单引号,数据库会误以为字符串在这里结束,导致语句被拆成了不合法的片段。
下面是两种可行的解决方法:
标准通用写法:用两个连续单引号转义内部单引号
这是所有主流数据库(MySQL、SQL Server、PostgreSQL等)都支持的SQL标准语法,把要匹配的单引号写成两个连在一起的单引号,数据库就会解析成一个实际的单引号字符:SELECT id FROM TestTable WHERE Test LIKE '%''test''%'特定数据库可选写法:用反斜杠转义(不推荐跨库使用)
部分数据库比如MySQL在默认配置下支持反斜杠转义,但这种方式只适用于特定数据库,通用性差:SELECT id FROM TestTable WHERE Test LIKE '%\'test\'%'
如果你的需求是匹配**完全等于'test'**的记录(而不是包含它的字符串),可以去掉LIKE里的通配符%,直接用等于判断:
SELECT id FROM TestTable WHERE Test = '''test'''
内容的提问来源于stack exchange,提问作者temp
相关产品推荐
相关产品推荐

