SQL提取JSON字段中数组中子字符串的实例总数

问题描述 投票:1回答:1

如何获取SQL查询以进入列的JSON,并找到整个列中子字符串的实例数?

我正在使用SQL Server 2016。

FruitPageTable
[Id, PageData (nvarchar(max))]
[1 , [{"id":"0","Url":"/i-like-apples/ok-cool"}, {"id":"1","Url":"/where-are-apples/nowhere"} ] 
[2 , [{"id":"0","Url":"/where-are-oranges/everywhere"}]
[3 , [{"id":"0","Url":"/where-are-apples/somewhere"}]
[4 , [{"id":"0","Url":"/apples"},{"id":"1","Url":"/yay-apples"},{"id":"2","Url":"/apples"}]

所以

SELECT COUNT(*) FROM FruitPageTable WHERE [PageData] LIKE '%apples%'

给我3 ...即包含'apples'的记录数量。

但是如何在所有记录中的Url中的JSON中的PageData属性中获取“苹果”的数量?即总共6次提及。我应该使用JSON_QUERY语法吗?

sql json sql-server json-query
1个回答
1
投票

我认为您不需要json_query即可检查'apples'stringmathematical功能的数量。

select
  sum(round((length(val) - length(replace(val, 'apples', '')))/length('apples'))) AS count    
from
  MySQLTable

请参见dbfiddle

sqlserver,使用openjson

select count(1) from
MySQLTable t1
cross apply openjson(t1.val)
with (
   url varchar(200) '$.Url'
) as i
where url like '%apples%'

请参见sqlfiddle

© www.soinside.com 2019 - 2024. All rights reserved.