SQL 中的 Fixind 无效 json

Fixind invalid json in SQL

我正在使用 json_extract_path_text 在 redshift 中解析 json,但是这个 json 无效(其中一个字段在字符串值中包含双引号):

"somefield": "4 *\"`)(z"

有什么方法可以去掉这个引用并将其替换为其他值(我不太关心这个特定的数据,因为它无论如何都是错误的,但我想获取这个的其他部分json).

您的字符串中反斜杠的数量似乎有误。您需要 or 1 来获取双引号,或者 3 来获取反斜杠和双引号。但这不是真正的问题。

您可以使用 REPLACE() 函数去除 \" 文本。https://docs.aws.amazon.com/redshift/latest/dg/r_REPLACE.html

REPLACE(json_text, '\"', '')

我相信 REPLACE() 不会进行任何字符串解释,因此不需要额外的转义。