我有一个存储在SQL NVARCHAR(MAX)
列中的json,如下所示:
{ "field1":"value1", "field2":"value2" ...}.
我想在任何字段上进行通配符搜索。示例查询可以是:
给我field2
中包含子串ax的所有行。查询应在field2
中返回带有传真,斧头等的记录。
是否可以在不编写SQLCLR功能的情况下执行此操作?使用LIKE支持的基本正则表达式的尝试是徒劳的。
答案 0 :(得分:1)
WHERE json LIKE '%, "field2":"%ax%'
答案 1 :(得分:0)
我可以使用函数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%'
答案 2 :(得分:0)
您可以使用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的作者,因此我对您使用它感兴趣:)