我在表中有一个名为“用户名”(varchar max,允许空值)的列。该表可能有多个条目,这些条目都存储在该列中。目前显示格式如下:
[“姓名1”,“姓名2”]
我正在尝试将 name1 和 name2 提取到单独的行中。我不知道该怎么做。这是我当前最接近的查询:
select u.id, a.[Username]
from dbo.Users u
CROSS APPLY OPENJSON(Username) WITH ([Username] varchar(max)) a
这正确地将它们拉出行,但行显示 NULL 而不是值。我检查了该名称与语法中的列名称是否匹配,确实如此。
最佳答案
OPENJSON 函数正在查找名为“用户名”的列。相反,请尝试为 OPENJSON 'oj' 指定一个别名,然后在不指定架构的情况下打开 JSON。然后将 oj.value 添加到 SELECT 列表中。像这样的事情
select u.id, oj.[value] as Username
from dbo.Users u
cross apply openjson(u.Username) oj;
关于json - 当值未命名时将 json 值检索到列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64374267/