Sql 从JSON列内的数组中以行的形式获取数据
我有一个表,Sql 从JSON列内的数组中以行的形式获取数据,sql,sql-server,sql-server-2016,Sql,Sql Server,Sql Server 2016,我有一个表,'Preference'列存储JSON字符串 a) 我想从companytype获取type作为行。 在我的尝试中,我得到了五行,但其中没有数据 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'
列存储JSON字符串
a) 我想从companytype
获取type
作为行。
在我的尝试中,我得到了五行,但其中没有数据
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
这是首选项
列中的数据
{
"companysize":{"min":0,"max":5},
"distance":{"min":100,"max":200},
"companytype":{"type":[1,2,3,4,5]},
"budget":{"min":1000,"max":2000}
}
删除
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
应用于返回的结果。路径$.companytype.type
只是一个整数数组,它没有任何其他属性在表模式后,查询问题本身。您可以使用JSON_QUERY@ManojNaikOPENJSON
没有问题。JSON_查询将不会返回行集,否则将无法执行此操作。我如何将结果作为一个结果来获取,例如1,2,3,4,5,这是B部分?尝试了这个方法,但我没有得到任何值:从FinPreferences p中选择JSON_值(Preference,$.companytype.type')作为[type],其中p.PreferenceID=1@alwaysVBNET那是另一个问题JSON_值
返回标量值,例如JSON_值(首选项,$.companytype.type[1])
将返回2
。如果希望返回多个值,如数组的内容,则需要JSON\u查询
,例如JSON\u查询(首选项,$.companytype.type')
将返回[1,2,3,4,5]