在SQL Server中解析Json

时间:2017-11-26 11:10:17

标签: json sql-server parsing

在我的表中,value列包含json数据。我正在使用parsejson来解析这些值。我使用的是旧版本的SQL Server。所以我使用的是parsejson:

id      fieldid      value
--------------------------------------------------------------------
1       70297        {"value":"Billable  ","text":"Billable"}
2       70297        [{"value":"billable","text":"Billable"}]
3       70297        [{"value":"billable","text":"Billable"},
                     {"value":"nonbillable","text":"NonBillable"}]
4       70297        [{"value":"     nonbillable","text":"      NonBillable"}]

我需要这个输出:

count   stringvalue
--------------------
 3      Billable
 2      nonbillable

我正在使用此查询来解析表中的json值:

DECLARE @Names VARCHAR(8000) 

SELECT @Names = COALESCE(@Names + ', ', '') + Value 
FROM ValueBindings  
WHERE fieldid = 70297

SELECT COUNT(*), StringValue 
FROM parseJSON(@Names) 
WHERE NAME IN ('value', 'text')  
GROUP BY StringValue

SELECT @Names

未正确返回预期值

1 个答案:

答案 0 :(得分:0)

尝试以下方法:

SELECT COUNT([NAME])/2 [COUNT], LTRIM(RTRIM(StringValue)) StringValue
FROM parseJSON(@Names) 
WHERE NAME IN ('value', 'text') AND [NAME] IS NOT NULL
GROUP BY LTRIM(RTRIM(StringValue))

感谢。