sql 中like有特殊字符\ “ 为何查不出结果?

数据库中有个字段存的是json,里面的内容大致为

"content":{\"systemToken\":false,\"timezone\":\"America/Los_Angeles\",\"totalCount\":false,\"userIds\":[]}"

需要查询totalCount是true的数据。

SELECT * from task  where  column_a like '%\"totalCount%'

这样有返回结果,但是把后面的字符加上就没有返回结果了

SELECT * from task  where  column_a like '%\"totalCount\"%'

当like语句中有双引号(")和反斜杠(\)的时候sql该怎么写?

阅读 2.3k
3 个回答

后面我重新试了下,可以写成下面的样子,其中前面的\最0-7个,对查询结果没啥影响,后面的可以4-7也能查出结果,很是神奇。

SELECT * from task where  column_a LIKE '%\\\\"totalCount\\\\":false%'

'%\"totalCount\\\"%' 。前面也可以加 '%\\\"totalCount\\\"%'

参见 string-literals

新手上路,请多包涵

postgresql可以用 LIKE '%\\\"totalCount\\\":false%'查出来,怀疑是MySQL在执行SQL阶段进行多次转义造成的问题,在MySQL中就算拿整个值出来全等比较也查不出来你的那条记录.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题