SQL 在 JSON 个字段中提取数组中子字符串的实例总数
SQL extract total number of instances of a substring in an array in JSON fields
如何让 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' 的记录数量。
但是如何在所有记录中获取 PageData
中 JSON 中 Url
属性 中 'apples' 的计数?即总共提到 6 次。
我应该使用 JSON_QUERY 的语法吗?
我认为您不需要 json_query
来检查 'apples'
、string
和 mathematical
函数的数量。
select
sum(round((length(val) - length(replace(val, 'apples', '')))/length('apples'))) AS count
from
MySQLTable
sqlserver,使用openjson
select count(1) from
MySQLTable t1
cross apply openjson(t1.val)
with (
url varchar(200) '$.Url'
) as i
where url like '%apples%'
如何让 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' 的记录数量。
但是如何在所有记录中获取 PageData
中 JSON 中 Url
属性 中 'apples' 的计数?即总共提到 6 次。
我应该使用 JSON_QUERY 的语法吗?
我认为您不需要 json_query
来检查 'apples'
、string
和 mathematical
函数的数量。
select
sum(round((length(val) - length(replace(val, 'apples', '')))/length('apples'))) AS count
from
MySQLTable
sqlserver,使用openjson
select count(1) from
MySQLTable t1
cross apply openjson(t1.val)
with (
url varchar(200) '$.Url'
) as i
where url like '%apples%'