json - 使用 JSON_VALUE 查询数组
问题描述
我有一个包含以下 JSON 数据的字段
[
{
"@odata.type":"#Sitecore.XConnect.Goal",
"CustomValues":[
],
"DefinitionId":"82c4c49c-b6b2-4b02-8e2f-fbcba9f92fe4",
"EngagementValue":60,
"Id":"335c92ce-5e36-4b13-9472-4940ad66e75f",
"Timestamp":"2019-05-07T23:53:34.4268677Z"
}
]
我正在尝试查找字段@odata.type
等于的所有 SQL 行#Sitecore.XConnect.Goal
。但它在数组内部。我已经尝试了下面的 SQL,但我无法返回任何 SQL 行。
SELECT *
FROM [client_Xdb.Collection.Shard0].[xdb_collection].[Interactions]
WHERE JSON_VALUE([Events], '$.[0]"odata.type"') = '#Sitecore.XConnect.Goal'
解决方案
您需要将路径指定为'$[0]."@odata.type"'
(缺少.
指示$[0]
对象成员的点运算符)。
SELECT *
FROM [usms_Xdb.Collection.Shard0].[xdb_collection].[Interactions]
WHERE JSON_VALUE([Events], '$[0]."@odata.type"') = '#Sitecore.XConnect.Goal'
例子:
DECLARE @json nvarchar(max) = N'[
{
"@odata.type":"#Sitecore.XConnect.Goal",
"CustomValues":[
],
"DefinitionId":"82c4c49c-b6b2-4b02-8e2f-fbcba9f92fe4",
"EngagementValue":60,
"Id":"335c92ce-5e36-4b13-9472-4940ad66e75f",
"Timestamp":"2019-05-07T23:53:34.4268677Z"
}
]'
SELECT JSON_VALUE(@json, '$[0]."@odata.type"') AS JsonValue
输出:
-----------------------
JsonValue
-----------------------
#Sitecore.XConnect.Goal
推荐阅读
- jquery - 如何使用jquery连接每个循环中的字符串
- amazon-web-services - AWS CodePipeline 通知
- javascript - 使用 Visual Studio 进行调试时忽略 node_modules 中的异常
- c# - Excel 加载项未加载。使用 Visual Studio 2015 加载 COM 插件开发的插件期间发生运行时错误
- java - Mondrian rolap 模式升级器
- ios - 为什么 AVAudioRecorder 在使用 kAudioFormatMPEGLayer3 格式时会抛出错误?
- javascript - Javascript:从内部获取数据
- c# - 使用 pinvoke 忽略调用应用程序从点获取表单句柄
- android - java.lang.NoSuchMethodError:没有直接方法
(Lcom/google/android/exoplayer2/upstream/DefaultAllocator;IIJJ)V - maven - Gradle MavenPublication:“尽管执行了操作,但任务尚未声明任何输出”