【发布时间】:2019-01-03 00:06:01
【问题描述】:
假设我的数据库中有一个名为 attributes 的列,它具有以下值作为示例:
{"pages":["Page1"]}
如何创建 where 子句,以便过滤掉包含“Page1”的行。
select JSON_QUERY(Attributes, '$.pages')
from Table
where JSON_QUERY(Attributes, '$.pages') in ('Page1')
编辑:
从docs 看来,这似乎可行,尽管它的作用似乎很复杂。
select count(*)
from T c
cross apply Openjson(c.Attributes)
with (pages nvarchar(max) '$.pages' as json)
outer apply openjson(pages)
with ([page] nvarchar(100) '$')
where [page] = 'Page1'
【问题讨论】:
-
而不是 in,你试过用 like 吗?我认为它提供了我们有第 1 页引用的实例(甚至不使用 Json_query),还有 Json_query 您是否尝试在那里提取值或选择列表中的 JSON 格式?
标签: json sql-server sql-server-2017