[英]SQL Server wildcard search on json
我有一个 json 存储在 SQL NVARCHAR(MAX)
列中,如下所示:
{ "field1":"value1", "field2":"value2" ...}.
我想对任何字段进行通配符搜索。 示例查询可以是:
给我在field2
中包含子字符串 ax 的所有行。 查询应在field2
返回带有传真、斧头等的记录。
是否可以在不编写 SQLCLR 函数的情况下执行此操作? 尝试使用 LIKE 支持的基本正则表达式是徒劳的。
WHERE json LIKE '%, "field2":"%ax%'
我可以使用函数 fnSplitJson2 来实现,该函数可以在http://www.sqlservercentral.com/articles/JSON/68128/上找到
DECLARE json nvarchar(max)
SELECT json =
'{ "field1":"value1"
, "field2":"fax"
, "field3":"axe"
, "field4":"value4"
}'
SELECT name, value
FROM dbo.fnSplitJson2(json, NULL)
WHERE value LIKE '%ax%'
您可以使用JSON Select执行此操作,如下所示:
select *
from your_table
where dbo.JsonNVarChar450(your_column, 'field2') like '%ax%'
如果您经常进行这种比较,您可以索引field2
的值以使其更快,如下所示:
alter table your_table
add field2 as dbo.JsonNVarChar450(your_column, 'field2') persisted
create index IX_your_table_field2 on your_table(field2)
披露:我是 JSON Select 的作者,因此我对您使用它感兴趣 :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.