Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: Förhandsversion av SQL Server 2025 (17.x)
Söker efter ett SQL-värde i en sökväg i ett JSON-dokument.
Anmärkning
Funktionen JSON_CONTAINS
är för närvarande i förhandsversion och är endast tillgänglig i SQL Server 2025 (17.x) Preview.
Transact-SQL syntaxkonventioner
Syntax
JSON_CONTAINS( target_expression , search_value_expression [ , path_expression ] )
Argumentpunkter
target_expression
Ett uttryck som returnerar ett JSON-måldokument för sökning. Värdet kan vara en json-typ eller ett teckensträngsvärde som innehåller ett JSON-dokument.
search_value_expression
Ett uttryck som returnerar ett SQL-skalärt värde eller json-typvärde för att söka i det angivna SQL/JSON-dokumentet.
sökväg
En SQL/JSON-sökväg som anger sökmålet i JSON-dokumentet. Den här parametern är valfri.
Du kan ange en variabel som värdet för sökvägen. JSON-sökvägen kan ange släpphänt eller strikt läge för parsning. Om du inte anger parsningsläget är läget lax standard. Mer information finns i JSON Path Expressions (SQL Server).
Standardvärdet för sökväg är $
. Om du inte anger något värde för sökvägenJSON_CONTAINS
söker du därför efter värdet i hela JSON-dokumentet.
Om formatet för sökväg inte är giltigt returnerar JSON_CONTAINS
ett fel.
Returvärde
Returnerar ett int-värde för 0
, 1
eller NULL
.
1
Värdet anger att det angivna sökvärdet fanns i JSON-måldokumentet eller 0
på annat sätt. Funktionen JSON_CONTAINS
returnerar NULL
om något av argumenten är NULL
, eller om den angivna SQL/JSON-sökvägen inte hittas i JSON-dokumentet.
Anmärkningar
Funktionen JSON_CONTAINS
följer dessa regler för att söka efter om ett värde finns i ett JSON-dokument:
Ett skalärt sökvärde finns i en målskalar om och endast om de är jämförbara och är lika. Eftersom json-typer endast har JSON-nummer eller sträng eller sant/falskt-värde begränsas de möjliga SQL-skalära typerna som kan anges som sökvärde till sql-numeriska typer, teckensträngstyper och bittyp .
SQL-typen för det skalära sökvärdet används för att utföra jämförelsen med json-typvärdet i den angivna sökvägen. Detta skiljer sig från
JSON_VALUE
-baserat predikat därJSON_VALUE
funktionen alltid returnerar ett teckensträngsvärde.Ett JSON-matrissökvärde finns i en målmatris om och endast om varje element i sökmatrisen finns i något element i målmatrisen.
Ett skalärt sökvärde finns i en målmatris om och endast om sökvärdet finns i något element i målmatrisen.
Ett JSON-objektsökningsvärde finns i ett målobjekt om och endast om varje nyckel/värde i sökobjektet hittas i målobjektet.
Begränsningar
JSON_CONTAINS
Funktionen har följande begränsningar:
- Json-typen stöds inte som sökvärde.
- JSON-objektet eller matrisen som returneras från
JSON_QUERY
stöds inte som sökvärde. - Sökvägsparametern krävs för närvarande.
- Om SQL/JSON-sökvägen pekar på en matris krävs jokertecken i sökvägsuttrycket SQL/JSON. Automatisk uppradning av matris sker för närvarande endast på den första nivån.
Stöd för JSON-index innehåller predikatet JSON_CONTAINS
och följande operatorer:
- Jämförelseoperatorer (
=
) -
IS [NOT] NULL
predikat (stöds inte för närvarande)
Exempel
A. Sök efter ett SQL-heltalsvärde i en JSON-sökväg
I följande exempel visas hur du söker efter ett SQL-int-värde i en JSON-matris i en JSON-sökväg.
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;
Här är resultatet.
is_value_found
--------
1
B. Sök efter ett SQL-teckensträngsvärde i en JSON-sökväg
I följande exempel visas hur du söker efter ett SQL-teckensträngsvärde i en JSON-matris i en JSON-sökväg.
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;
Här är resultatet.
is_value_found
--------
1
C. Sök efter ett SQL-bitvärde i en JSON-matris i en JSON-sökväg
I följande exempel visas hur du söker efter ett SQL-bitvärde i en JSON-matris i en JSON-sökväg.
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;
Här är resultatet.
is_value_found
--------
1
D. Sök efter ett SQL-heltalsvärde som finns i en kapslad JSON-matris
I följande exempel visas hur du söker efter ett SQL-int-värde som finns i en kapslad JSON-matris i en JSON-sökväg.
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;
Här är resultatet.
is_value_found
--------
1
E. Sök efter ett SQL-heltalsvärde som finns i ett JSON-objekt i en JSON-matris
I följande exempel visas hur du söker efter ett SQL-int-värde som finns i ett JSON-objekt i en JSON-matris i en JSON-sökväg.
DECLARE @j AS JSON = '[{"a": 1}, {"b": 2}, {"c": 3}, {"a": 56}]';
SELECT json_contains(@j, 56, '$[*].a') AS is_value_found;
Här är resultatet.
is_value_found
--------
1