A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://learn.microsoft.com/en-us/sql/relational-databases/json/json-path-expressions-sql-server below:

JSON Path Expressions - SQL Server

Applies to: SQL Server 2016 (13.x) and later versions Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics (serverless SQL pool only) SQL database in Microsoft Fabric Preview

Use JSON path expressions to reference the properties of JSON objects.

You have to provide a path expression when you call the following functions.

Parts of a path expression

A path expression has two components.

  1. The optional path mode, with a value of lax or strict.

  2. The path itself.

Path mode

At the beginning of the path expression, optionally declare the path mode by specifying the keyword lax or strict. The default is lax.

The following query explicitly specifies lax mode in the path expression.

DECLARE @json AS NVARCHAR (MAX);

SET @json = N'{ ... }';

SELECT *
FROM OPENJSON (@json, N'lax $.info');
Path

After the optional path mode declaration, specify the path itself.

Array wildcard and range support

Note

Array wildcard and range support is currently in preview and only available in SQL Server 2025 (17.x) Preview.

SQL Server 2025 (17.x) Preview expands ANSI SQL/JSON path expression to support an array wildcard. The Array wildcard allows you to specify all elements, range of elements, list of elements or the special token "last" to indicate the last value in a JSON array. SQL/JSON arrays use zero-based index. SQL/JSON path with wildcards can be used in JSON_QUERY, JSON_PATH_EXISTS, and JSON_CONTAINS.

While JSON_VALUE function supports the SQL/JSON path expression, the return value of a JSON_VALUE function is a SQL scalar and hence the function always returns NULL for any SQL/JSON path that points to a JSON object or array. Array wildcards are supported only if the input is a json type.

The following syntax shows how the wildcard, range, and special token last can be used:

path[elements ]

elements ::= {
*
| number
| number to number
| last
| {number...[, number] }
}

The special token last can be used in lieu of number value. If a range is specified, then the range needs to be specified in increasing order.

Examples of some valid SQL/JSON path expressions:

Path Description $[*] All elements $[0] First element $[0 to 2] First three elements $[last] Last element $[last, 0] Invalid $[last, 2, 0, last] Invalid $.creditcards[0].type Returns the type property value of first element in creditcards array $.credit_cards[*].type Returns the type property value of all elements in creditcards array $.credit_cards[0, 2].type Returns the type property value of first and third element in creditcards array $.credit_cards[1 to 3].type Returns the type property value of second to fourth element in creditcards array $.credit_cards[last].type Returns the type property value of last element in creditcards array $.credit_cards[last, 0].type Returns the type property value of last and first element in creditcards array Examples

The examples in this section reference the following JSON text.

{
    "people": [{
        "name": "John",
        "surname": "Doe"
    }, {
        "name": "Jane",
        "surname": null,
        "active": true
    }]
}

The following table shows some examples of path expressions.

Path expression Value $.people[0].name John $.people[1] { "name": "Jane", "surname": null, "active": true } $.people[1].surname NULL $ { "people": [ { "name": "John", "surname": "Doe" },{ "name": "Jane", "surname": null, "active": true } ] } $.people[last].name ["Jane"] $.people[0 to 1].name ["John","Jane"] $.people[0, 1].name ["John","Jane"] How built-in functions handle duplicate paths

If the JSON text contains duplicate properties - for example, two keys with the same name on the same level - the JSON_VALUE and JSON_QUERY functions return only the first value that matches the path. To parse a JSON object that contains duplicate keys and return all values, use OPENJSON, as shown in the following example.

DECLARE @json AS NVARCHAR (MAX);

SET @json = N'{"person":{"info":{"name":"John", "name":"Jack"}}}';

SELECT value
FROM OPENJSON (@json, '$.person.info');
Learn more about JSON

For a visual introduction to the built-in JSON support, see the following video:


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4