【发布时间】:2020-10-15 14:51:36
【问题描述】:
我在表中有一个名为 Username(varchar max,允许空值)的列。该表可能有多个条目都存储在此列中。目前以这种格式显示:
["name1","name2"]
我正在尝试将 name1 和 name2 提取到单独的行中。我不知道该怎么做。这是我目前最接近的查询:
select u.id, a.[Username]
from dbo.Users u
CROSS APPLY OPENJSON(Username) WITH ([Username] varchar(max)) a
这是将它们正确地按行拉出,但行显示 NULL 而不是值。我检查了该名称是否与语法中的列名匹配,并且确实如此。
【问题讨论】:
-
删除
WITH子句。 -
您可以通过在
WITH子句中传递$路径来命名嵌套在数组中的 JSON 值 -SELECT a.Username FROM OPENJSON('["John","Kat"]') WITH ([Username] varchar(max) '$') a
标签: json sql-server