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.
Note
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 ] [ , search_mode ] )
Arguments
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.
path
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 in the SQL Database Engine (JSON Path Expressions in the SQL Database Engine).
Standardvärdet för sökvägen ä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 sökvägens format inte är giltigt JSON_CONTAINS returnerar ett fel.
search_mode
Anger om sökläget för värdet ska använda likhets- eller LIKE-predikatsemantik. Den här parametern gäller endast när search_value_expression är ett teckensträngsvärde. Standardvärdet för search_mode är 0, vilket anger likhetspredikatsemantik. Om search_mode är 1 anger den att LIKE-predikatsemantik ska användas.
Returvärde
Returnerar ett int-värde för 0, 1eller 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.
Remarks
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_VALUEfunktionen 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.
Limitations
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_QUERYstö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] NULLpredikat (stöds inte för närvarande)
Examples
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
F. Sök efter ett SQL-teckensträngsvärde i en JSON-sökväg med hjälp av ett jokerteckenmönster
I följande exempel visas hur du söker efter ett SQL-teckensträngsvärde med hjälp av ett mönster 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