[英]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.