在MySQL5.7中,我无法使用json琰u extract函数提取带引号的字符串。
样本输入:
{
"email": "d'souza@email.com",
"body": "I may have "random quotes '(single)/(double)" " in my source data"
}
尝试使用,
SELECT
@valid_source := JSON_VALID(jsonString), NULL
IF(@valid_source, JSON_UNQUOTE(JSON_EXTRACT(jsonString, "$.email")), NULL)
我得到一个错误:函数json的参数1中的json文本无效。\u extract:“字符串中缺少右引号。”在位置处
任何帮助都将不胜感激,谢谢!
1条答案
按热度按时间yduiuuwa1#
下面是一个对我有效的修复方法:我使用了运算符“-->”而不是json_unquote(json_extract(“jsonstring”)),并且它没有对输入字符串中的任何类型的引号抛出任何错误。请注意,上面的示例json只是我在输入中期望的用例之一。我有大约400万条记录,有各种不同的字符和引号组合,因为它包含电子邮件正文,使用运算符而不是实际的命令工作得非常好,这很奇怪,因为两者本质上是相同的,但从来没有少我很高兴我可以解决它使用一个小补丁。