【发布时间】:2020-09-27 01:32:33
【问题描述】:
我正在处理一个带有 JSON 值列的 SQL 表。该列的每一行都是 JSON 结构中的字符串值。此 JSON 结构始终是一个数组,其中包含一项的一个或多个对象。对象的数量和关键词可以变化。例如,第一行可能如下所示:
[{"Page View":"Page"}
,{"Search Data":"9"}
,{"Search Distance":"undefined"}
,{"Search Location":"undefined"}
,{"Search Filters":"{}"}
,{"Search No Restrictions":"undefined"}
,{"Search Term":"Services"}
,{"Search Type":"Id"}]
第二行的值可能如下所示:
[{"Page Type":"Service"}
,{"Organization ID":"111555666"}
,{"Service ID":"333444"}
,{"refUrl":"https://randomURL"}]
我正在尝试将这些值转换为具有多个元素的一个对象
所以第一行看起来像这样:
{"Page View":"Page"
,"Search Data":"9"
,"Search Distance":"undefined"
,"Search Location":"undefined"
,"Search Filters":"{}"
,"Search No Restrictions":"undefined"
,"Search Term":"Services"
,"Search Type":"Id"}
第二行是这样的:
{"Page Type":"Service"
,"Organization ID":"111555666"
,"Service ID":"333444"
,"refUrl":"https://randomURL"}
我试过这个方法:
SELECT FRUA.Id,
REPLACE(REPLACE(REPLACE(REPLACE(JSON_column, '{',''),'}',''), '[','{'),']','}')
FROM test.table
这是可行的,但它可能会意外更改 { 或 [ 的值,例如 "Search Filters":"{}",或者会破坏嵌套元素。有没有更好的方法在 SQL Server Azure 12.0.2000.8 上完成此任务?
【问题讨论】:
-
AF 先生,它没有。我不能真正使用 OPENJSON 相关的命令来做我想做的事。
标签: sql json sql-server sql-server-2017 sql-server-azure