对来自OPENJSON的结果集使用STUFF()

对来自OPENJSON的结果集使用STUFF(),json,sql-server,ssms,sql-server-2016,stuff,Json,Sql Server,Ssms,Sql Server 2016,Stuff,我有一个ClassTable,如下所示,有一个Languages列,其中数据是JSON格式的: 身份证件 标题 语言文字 1. 第一类 [{“ID”:1,“Name”:“English”},{“ID”:2,“Name”:“Hindi”}] 2. 类别2 [{“ID”:1,“Name”:“Marathi”},{“ID”:2,“Name”:“Telugu”}] 从逻辑上讲,它应该是有效的 SELECT X.ID, X.Title, (

我有一个
ClassTable
,如下所示,有一个
Languages
列,其中数据是JSON格式的:

身份证件 标题 语言文字 1. 第一类 [{“ID”:1,“Name”:“English”},{“ID”:2,“Name”:“Hindi”}] 2. 类别2 [{“ID”:1,“Name”:“Marathi”},{“ID”:2,“Name”:“Telugu”}]
从逻辑上讲,它应该是有效的

 SELECT 
         X.ID,
         X.Title,
        (
        select cast(ID as varchar) +',' from OPENJSON(x.Languages)
             WITH (ID INT '$.ID')
             for xml path('')
        ) LanguageID
     FROM 
         ClassTable X where x.id=1

东西
与此无关;这里所做的就是删除字符串的第一个字符。它不生成带分隔符的字符串(在上面的示例中,对于XML路径,这将是
)。考虑到您使用的是SQL Server 2017,为什么不使用
STRING\u AGG
?感谢@Larnu的快速回复,但我刚刚意识到我的服务器上有SQL Server 2016。您是否打算发布新的答案?为什么不是你现有的那个?是的。上一篇帖子是不同的,我想通知用户删除“,”这感觉就像你应该为另一个答案发表评论,如果这是你的意图的话。好的,当然!让我记下来。谢谢你让我现在开始this@SQLServerBuddy如果我想在where子句中添加LanguageID呢?