使用JSON值查询SQL数据库
这是我的JSON:使用JSON值查询SQL数据库,json,sql-server,Json,Sql Server,这是我的JSON: [{"Key":"schedulerItemType","Value":"schedule"},{"Key":"scheduleId","Value":"82"},{"Key":"scheduleEventId","Value":"-1"}
[{"Key":"schedulerItemType","Value":"schedule"},{"Key":"scheduleId","Value":"82"},{"Key":"scheduleEventId","Value":"-1"},{"Key":"scheduleTypeId","Value":"2"},{"Key":"scheduleName","Value":"Fixed Schedule"},{"Key":"moduleId","Value":"5"}]
我想按FileMetadata列查询数据库
我试过这个:
SELECT * FROM FileSystemItems WHERE JSON_VALUE(FileMetadata, '$.Key') = 'scheduleId' and JSON_VALUE(FileMetadata, '$.Value') = '82'
但它不起作用
我让它只使用一个字典键/值对,但我需要以不同的方式返回数据,所以我现在将它与键和值一起添加到json中
我做错了什么?对于给定的示例数据,您必须提供一个数组索引来查询第1个元素(基于0的数组索引),例如:
选择*
从dbo.filesystemems
其中json_值(FileMetadata,$[1].Key')='scheduleId'
和json_值(FileMetadata,$[1].value')='82'
如果scheduleId
键可以出现在数组中的任意位置,则可以重新构造查询以供使用,例如:
选择*
从dbo.filesystemems
将openjson(FileMetadata)与(
[Key]nvarchar(50)N'$.Key',
值nvarchar(50)N'$.Value'
)j
其中j.[Key]=N'scheduleId'
和j.值=N'82'
就是这样!!!谢谢:-)我用了第一项。它应始终位于1索引(第2项)