如何对包含双引号的字符串使用 where like
How to use where like for a string that includes double quotes
在我的 Firebird(2.5 版)table 中有一个 JSON 字符串。我需要搜索以查找整个值是否等于某个值,因此我想在 where 查询中包含双引号。
例如:
SELECT myfield FROM mytable WHERE json like '"%thisIsSomeString%"'
要匹配的示例 JSON:
{"id1":"fake1", "id2":"thisIsSomeString"}
示例 JSON 与 不 匹配:
{"id1":"fake1", "id2":"thisIsSomeString but with extra data"}
不行,估计是字符串转义的问题。
我使用 FlameRobin 检查了 JSON 值,它似乎是一个普通的 JSON 字符串。
如何实现?
如果您正在寻找字符串 "thisIsSomeString"
,那么您需要使用 LIKE '%"thisIsSomeString"%'
。
您尝试的谓词 like '"%thisIsSomeString%"'
查找以 "
开头的值,然后是零个或多个字符,然后是字符串 thisIsSomeString
,然后是零个或多个字符,然后然后以 "
结束。这与您的 JSON 值不匹配,因为它们以 {
开头并以 }
结尾,也不符合您查找子字符串 "thisIsSomeString"
.[=19 的要求=]
既然有简单的工具,为什么要使用复杂的工具来混淆自己和服务器?您在 LIKE
中犯了错误 - 但您只是不必使用它。
您想检查数据库值是否包含某些子字符串 - SQL 正好为您进行了检查。
SELECT myfield FROM mytable
WHERE json CONTAINING '"thisIsSomeString"'`
在我的 Firebird(2.5 版)table 中有一个 JSON 字符串。我需要搜索以查找整个值是否等于某个值,因此我想在 where 查询中包含双引号。
例如:
SELECT myfield FROM mytable WHERE json like '"%thisIsSomeString%"'
要匹配的示例 JSON:
{"id1":"fake1", "id2":"thisIsSomeString"}
示例 JSON 与 不 匹配:
{"id1":"fake1", "id2":"thisIsSomeString but with extra data"}
不行,估计是字符串转义的问题。 我使用 FlameRobin 检查了 JSON 值,它似乎是一个普通的 JSON 字符串。
如何实现?
如果您正在寻找字符串 "thisIsSomeString"
,那么您需要使用 LIKE '%"thisIsSomeString"%'
。
您尝试的谓词 like '"%thisIsSomeString%"'
查找以 "
开头的值,然后是零个或多个字符,然后是字符串 thisIsSomeString
,然后是零个或多个字符,然后然后以 "
结束。这与您的 JSON 值不匹配,因为它们以 {
开头并以 }
结尾,也不符合您查找子字符串 "thisIsSomeString"
.[=19 的要求=]
既然有简单的工具,为什么要使用复杂的工具来混淆自己和服务器?您在 LIKE
中犯了错误 - 但您只是不必使用它。
您想检查数据库值是否包含某些子字符串 - SQL 正好为您进行了检查。
SELECT myfield FROM mytable
WHERE json CONTAINING '"thisIsSomeString"'`