Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik: SQL Server 2025 (17.x)
Egy JSON-dokumentum elérési útjának SQL-értékét keresi.
Note
A JSON_CONTAINS funkció jelenleg előnézetben van, és csak SQL Server 2025 (17.x) verzióban érhető el.
Transact-SQL szintaxis konvenciók
Syntax
JSON_CONTAINS( target_expression , search_value_expression [ , path_expression ] [ , search_mode ] )
Arguments
target_expression
Kifejezés, amely egy cél JSON-dokumentumot ad vissza a kereséshez. Az érték lehet JSON-típus vagy karaktersztring érték, amely JSON-dokumentumot tartalmaz.
search_value_expression
Olyan kifejezés, amely egy SQL skaláris vagy json típusú értéket ad vissza a megadott SQL/JSON-dokumentumban való kereséshez.
path
Egy SQL/JSON-elérési út, amely megadja a keresési célt a JSON-dokumentumban. Ez a paraméter nem kötelező.
Megadhat egy változót az elérési út értékeként. A JSON-elérési út megadhatja a hasadékot vagy a szigorú elemzési módot. Ha nem adja meg az elemzési módot, a lax mód az alapértelmezett. További információ: JSON Path Expressions in the SQL Database Engine.
Az elérési út alapértelmezett értéke.$ Ennek eredményeképpen, ha nem ad meg értéket az elérési úthoz, JSON_CONTAINS a teljes JSON-dokumentumban megkeresi az értéket.
Ha az elérési út formátuma érvénytelen, JSON_CONTAINS hibát ad vissza.
search_mode
Azt jelzi, hogy az érték keresési módjának egyenlőséget vagy LIKE predikátumot kell-e használnia. Ez a paraméter csak akkor érvényes, ha a search_value_expression karaktersztring-érték. A search_mode alapértelmezett értéke 0, ami egyenlőségi predikátum szemantikát jelez. Ha a search_mode 1, akkor azt jelzi, hogy a LIKE predikátum szemantikát kell használni.
Visszaadott érték
Visszatér egy int értékkel: 0, 1, vagy NULL. Az érték 1 azt jelzi, hogy a megadott keresési érték a cél JSON-dokumentumban 0 vagy más módon található. A JSON_CONTAINS függvény akkor ad vissza NULL , ha az argumentumok bármelyike, NULLvagy ha a megadott SQL/JSON-elérési út nem található a JSON-dokumentumban.
Remarks
A JSON_CONTAINS függvény az alábbi szabályokat követi a kereséshez, ha egy JSON-dokumentum tartalmaz egy értéket:
A skaláris keresési érték akkor és csak akkor szerepel a cél skalárban, ha összehasonlítható és egyenlő. Mivel a json-típusok csak JSON-számmal vagy sztringgel vagy igaz/hamis értékkel rendelkeznek, a keresési értékként megadható lehetséges SQL skaláris típusok az SQL-numerikus típusokra, a karaktersztringtípusokra és a bittípusra korlátozódnak.
A skaláris keresési érték SQL-típusa a megadott elérési út json típusú értékével való összehasonlítás végrehajtására szolgál. Ez eltér a
JSON_VALUEalapú predikátumtól, ahol aJSON_VALUEfüggvény mindig egy karakterlánc-értéket ad vissza.A JSON-tömb keresési értéke akkor és csak akkor szerepel a céltömbben, ha a keresési tömb minden eleme a céltömb valamely elemében található.
A skaláris keresési érték akkor és csak akkor szerepel a céltömbben, ha a keresési érték a céltömb valamely elemében található.
A JSON-objektum keresési értéke akkor és csak akkor szerepel a célobjektumban, ha a keresési objektum minden kulcsát/értékét a célobjektum tartalmazza.
Limitations
A függvény használata a JSON_CONTAINS következő korlátozásokkal rendelkezik:
- A json típus nem támogatott keresési értékként.
- A visszaadott
JSON_QUERYJSON-objektum vagy tömb nem támogatott keresési értékként. - Az elérési út paramétere jelenleg kötelező.
- Ha az SQL/JSON elérési út egy tömbre mutat, akkor helyettesítő karakterre van szükség az SQL/JSON elérési út kifejezésében. Az automatikus tömb kibontása jelenleg csak az első szinten történik.
A JSON-index támogatása magában foglalja a JSON_CONTAINS predikátumot és a következő operátorokat:
- Összehasonlító operátorok (
=) -
IS [NOT] NULLpredikátum (jelenleg nem támogatott)
Examples
A. SQL egész számérték keresése egy JSON-útvonalon
Az alábbi példa bemutatja, hogyan kereshet sql int értéket egy JSON-tömbben egy JSON-útvonalon.
DECLARE @j AS JSON = '{"a": 1, "b": 2, "c": {"d": 4, "ce":["dd"]}, "d": [1, 3, {"df": [89]}, false], "e":null, "f":true}';
SELECT json_contains(@j, 1, '$.a') AS is_value_found;
Itt van az eredmények összessége.
is_value_found
--------
1
B. SQL karakterlánc értékének keresése egy JSON-útvonalon
Az alábbi példa bemutatja, hogyan kereshet egy SQL karaktersorozatot egy JSON-tömbben egy JSON-útvonalon.
DECLARE @j AS JSON = '{"a": 1, "b": 2, "c": {"d": 4, "ce":["dd"]}, "d": [1, 3, {"df": [89]}, false], "e":null, "f":true}';
SELECT json_contains(@j, 'dd', '$.c.ce[*]') AS is_value_found;
Itt van az eredmények összessége.
is_value_found
--------
1
C. SQL-bitérték keresése egy JSON-tömbben egy JSON-útvonalon
Az alábbi példa bemutatja, hogyan kereshet sql bitértéket egy JSON-tömbben egy JSON-útvonalon.
DECLARE @j AS JSON = '{"a": 1, "b": 2, "c": {"d": 4, "ce":["dd"]}, "d": [1, 3, {"df": [89]}, false], "e":null, "f":true}';
SELECT json_contains(@j, CAST (0 AS BIT), '$.d[*]') AS is_value_found;
Itt van az eredmények összessége.
is_value_found
--------
1
D. Beágyazott JSON-tömbben található SQL-egész szám keresése
Az alábbi példa bemutatja, hogyan kereshet egy beágyazott JSON-tömbben található SQL int értéket egy JSON-elérési úton.
DECLARE @j AS JSON = '{"a": 1, "b": 2, "c": {"d": 4, "ce":["dd"]}, "d": [1, 3, {"df": [89]}, false], "e":null, "f":true}';
SELECT json_contains(@j, 89, '$.d[*].df[*]') AS is_value_found;
Itt van az eredmények összessége.
is_value_found
--------
1
E. Egy JSON-tömb JSON-objektumában található SQL egész számérték keresése
Az alábbi példa bemutatja, hogyan kereshet egy JSON-objektumban található SQL-int értéket egy JSON-útvonal JSON-tömbjében.
DECLARE @j AS JSON = '[{"a": 1}, {"b": 2}, {"c": 3}, {"a": 56}]';
SELECT json_contains(@j, 56, '$[*].a') AS is_value_found;
Itt van az eredmények összessége.
is_value_found
--------
1
F. SQL-karakter sztringértékének keresése egy JSON-útvonalon helyettesítő karaktermintával
Az alábbi példa bemutatja, hogyan kereshet SQL-karakter sztringértéket egy JSON-útvonalon lévő JSON-tömb mintájának használatával.
DECLARE @j AS JSON = '{"a": 1, "b": 2, "c": {"d": 4, "ce":["dd"]}, "d": [1, 3, {"df": [89]}, false], "e":null, "f":true}';
SELECT json_contains(@j, 'dd', '$.c.ce[*]') AS is_value_found;
Itt van az eredmények összessége.
is_value_found
--------
1