MySQL5.7 json\u extract无法处理对象中带引号的字符串:[error]“字符串中缺少右引号”

up9lanfz  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(354)

在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:“字符串中缺少右引号。”在位置处
任何帮助都将不胜感激,谢谢!

zzwlnbp8

zzwlnbp81#

下面是一个对我有效的修复方法:我使用了运算符“-->”而不是json_unquote(json_extract(“jsonstring”)),并且它没有对输入字符串中的任何类型的引号抛出任何错误。请注意,上面的示例json只是我在输入中期望的用例之一。我有大约400万条记录,有各种不同的字符和引号组合,因为它包含电子邮件正文,使用运算符而不是实际的命令工作得非常好,这很奇怪,因为两者本质上是相同的,但从来没有少我很高兴我可以解决它使用一个小补丁。

{
@valid_json := JSON_VALID(inputString),
IF(@valid_json, inputString ->> '$.email', NULL) AS EMAIL,
}

相关问题