1

SQL Server で、INjson 配列に対してクエリを実行する方法はありますか?

例えば。

foojson配列を含む列があります

行1 ->{"foo":["a", "b"]}

行 2 ->{"foo":["c", "a", "b"]}

bJSON配列にある行を照会する必要があります

JSON_QUERY配列を返すことはできますが、それを行う方法はありません

何かのようなもの

SELECT *   
FROM table1 
WHERE "b" in JSON_QUERY(foo)

LIKEクエリは機能しますが、非効率的です

4

1 に答える 1

3

と組み合わせOPENJSONJSON_QUERY使用CROSS APPLY​​すると、結果を配列要素レベルに分解できます

declare @tmp table (foo nvarchar(max))

insert into @tmp values
('{"foo":["a", "b"]}')
,('{"foo":["c", "a", "b"]}')
,('{"foo":["c", "a", "y"]}')

SELECT foo
  FROM @tmp AS c
  CROSS APPLY OPENJSON(JSON_QUERY(foo, '$.foo')) AS x
  where x.[value]='b'

サンプル入力:

ここに画像の説明を入力

出力例:

ここに画像の説明を入力

于 2018-08-08T16:50:36.203 に答える