我有一个表名称“广告系列”.其中一列名为“filter_apps”,其类型为JSON
我有文件行,它们只包含这样的标记数组:
["be3beb1fe916ee653ab825fd8fe022", "c130b917983c719495042e31306ffb"]
["4fef3f1999c78cf987960492da4d2a"]
["106c274e319bdeae8bcf8daf515b1f"]
["2521f0df6cffb7487d527319674cf3"]
["c130b917983c719495042e31306ffb"]
例子:
SELECT JSON_SEARCH(filter_apps, 'one', 'c130b917983c719495042e31306ffb') FROM campaigns;
结果:
"$[1]"
null
null
null
"$[0]"
现在一切都正确,匹配的列回来了.如果我做一个测试,我可以证明:
SELECT JSON_EXTRACT(filter_apps, '$[1]') FROM campaigns;
结果
"c130b917983c719495042e31306ffb"
null
null
null
null
所以在这一点上我想我可以使用JSON_EXTRACT提取值,我的查询:
SELECT JSON_EXTRACT(filter_apps, JSON_SEARCH(filter_apps, 'one', 'c130b917983c719495042e31306ffb')) FROM campaigns;
这导致我出错:
“[42000] [3143]无效的JSON路径表达式.错误在字符位置1附近.”
解决方法:
SOLUTION
就那么简单:
SELECT JSON_EXTRACT(filter_apps, JSON_UNQUOTE(JSON_SEARCH(filter_apps, 'one', 'c130b917983c719495042e31306ffb'))) FROM campaigns;
问题解决了!我将JSON_SEARCH包装在JSON_UNQUOTE方法中!
一点点提示,我在这里找到了解决方案:https://dev.mysql.com/doc/refman/5.7/en/json-function-reference.html
标签:json,mysql,mysql-5-7 来源: https://codeday.me/bug/20190611/1218585.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。