首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用mySQL搜索转义字符串?

如何使用mySQL搜索转义字符串?
EN

Stack Overflow用户
提问于 2018-07-20 01:51:52
回答 3查看 53关注 0票数 0

我遇到了一个最奇怪的问题:

我正在尝试获取数据格式为this的列的计数:

代码语言:javascript
复制
"{\"errors\":0,\"results\":{\"isError\":true,\"errorCode\":305,\"errorString\":\"Contact already exists: test@gmail.com\"}}"

它是一个包含转义字符的字符串。

我正试着在isError:true上搜索,但我所做的一切都不起作用。

我试过了

SELECT * FROM mytable WHERE col LIKE "%isError\":true%"

SELECT * FROM mytable WHERE col LIKE '%isError\":true%'

SELECT * FROM mytable WHERE col LIKE '%isError":true%'

SELECT * FROM mytable WHERE col LIKE '%isError\\":true%'

所有结果都是零。

如何在这个转义字符串上搜索?

这是完整的数据。请记住,它是以字符串形式存储的。

"{\"errors\":0,\"results\":{\"isError\":true,\"errorCode\":305,\"errorString\":\"Contact already exists: test@gmail.com\"}}"

它存储在文本类型列中,外引号和所有内容。

(这是我正在开发的一个遗留系统。)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-07-20 07:07:11

我找到了答案。

要在字符串中搜索转义反斜杠,在LIKE中,您必须使用四个反斜杠。这不是直觉,但事实就是如此。

How to search for slash () in MySQL? and why escaping () not required for where (=) but for Like is required?

谢谢你的帮助。希望这对将来的人有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2018-07-20 02:04:33

您显示的数据示例看起来像JSON。JSON5.7中有一些搜索MySQL结构的函数:https://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html

没有理由在数据库中存储反斜杠。您是否在插入此数据时意外地进行了双重转义?

票数 1
EN

Stack Overflow用户

发布于 2018-07-20 02:21:59

我相信MySQL中的反斜杠也是一个转义符号,这是查询中唯一需要转义的东西(如果使用单引号,无论如何都应该转义)。要转义反斜杠,只需重复一次:

代码语言:javascript
复制
select * from mytable where col like '%isError\\":true%'

不过,Bill提出了一个很好的观点--从长远来看,以不同的方式存储JSON会更好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51429051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档