Combining JSON_SEARCH and JSON_EXTRACT get me: “Invalid JSON path expression.”

半腔热情 提交于 2020-05-29 02:38:48

问题


I have a table names "campaigns". One of the columns is named "filter_apps" and his type is JSON

I have file rows and they just contain array of tokens like so:

["be3beb1fe916ee653ab825fd8fe022", "c130b917983c719495042e31306ffb"]
["4fef3f1999c78cf987960492da4d2a"]
["106c274e319bdeae8bcf8daf515b1f"]
["2521f0df6cffb7487d527319674cf3"]
["c130b917983c719495042e31306ffb"]

Examples:

SELECT JSON_SEARCH(filter_apps, 'one', 'c130b917983c719495042e31306ffb') FROM campaigns;

Result:

"$[1]"
null
null
null
"$[0]"

Right now everything is correct, the matched columns come back. If I make a test I can prove it:

SELECT JSON_EXTRACT(filter_apps, '$[1]') FROM campaigns;

Result

"c130b917983c719495042e31306ffb"
null
null
null
null

So in this point I think I can extract the values using JSON_EXTRACT, my query:

SELECT JSON_EXTRACT(filter_apps, JSON_SEARCH(filter_apps, 'one', 'c130b917983c719495042e31306ffb')) FROM campaigns;

That leads me to an error:

"[42000][3143] Invalid JSON path expression. The error is around character position 1."


回答1:


SOLUTION

Simple as that:

SELECT JSON_EXTRACT(filter_apps, JSON_UNQUOTE(JSON_SEARCH(filter_apps, 'one', 'c130b917983c719495042e31306ffb'))) FROM campaigns;

Problem resolved! I wrap JSON_SEARCH in a JSON_UNQUOTE method!

A little tip, I found the solution here: https://dev.mysql.com/doc/refman/5.7/en/json-function-reference.html



来源:https://stackoverflow.com/questions/40540720/combining-json-search-and-json-extract-get-me-invalid-json-path-expression

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!