我有一个表,其中'Preference'
列存储JSON字符串。
a)我想从type
获得companytype
作为行。
在尝试sqlfiddle时,我得到了五行,但其中没有数据。
SELECT z.[Type]
FROM FinPreferences p
CROSS APPLY OPENJSON(Preference,'$.companytype.type') WITH (
[Type] INT
) z
WHERE PreferenceID=1
b)如何将结果作为一个字符串行即
1,2,3,4,5
这是Preference
列中的数据
{
"companysize":{"min":0,"max":5},
"distance":{"min":100,"max":200},
"companytype":{"type":[1,2,3,4,5]},
"budget":{"min":1000,"max":2000}
}
答案 0 :(得分:2)
要么删除WITH
子句,然后使用value
字段来检索数组的值,例如:
SELECT z.value as Type
FROM FinPreferences p
CROSS APPLY OPENJSON(Preference,'$.companytype.type') z
WHERE PreferenceID=1
或者仅将$
用作WITH
子句中的路径:
SELECT z.Type
FROM FinPreferences p
CROSS APPLY OPENJSON(Preference,'$.companytype.type')
WITH ( Type int '$') z
WHERE PreferenceID=1
WITH
适用于OPENJSON返回的结果。路径$.companytype.type
只是一个整数数组,没有任何其他属性