簡體   English   中英

json 上的 SQL Server 通配符搜索

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM