sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan henvises til JSON-nøgler, der indeholder specielle tegn, når du bruger OPENJSON, JSON_QUERY og JSON_VALUE (SQL-server)

Hvis du bruger en T-SQL-funktion såsom OPENJSON() , JSON_QUERY() , eller JSON_VALUE() , kan du være på vagt over for ikke-alfanumeriske tegn, der kan være i det JSON-dokument, du arbejder med. Især hvis disse specialtegn er i nøglenavnene, og du skal henvise til disse nøglenavne.

For eksempel kan du have et nøglenavn, der indeholder et mellemrum (såsom "first name" ), eller et dollartegn ($ ).

Heldigvis, hver gang du refererer til sådanne nøgler, kan du blot omgive nøglenavnet med dobbelte anførselstegn.

Eksempel 1 – OPENJSON()

Her er et eksempel på henvisning til en nøgle med et mellemrum i navnet, når du bruger OPENJSON() .

DECLARE @json NVARCHAR(4000) = N'{
        "contact details" : {
            "client id" : 1, 
            "work phone" : "+61 987 902 029"
        }
    }';
SELECT * FROM OPENJSON(@json, '$."contact details"');

Resultat:

+------------+-----------------+--------+
| key        | value           | type   |
|------------+-----------------+--------|
| client id  | 1               | 2      |
| work phone | +61 987 902 029 | 1      |
+------------+-----------------+--------+

Her er endnu et eksempel, denne gang har vi et dollartegn i nøglenavnet.

DECLARE @json NVARCHAR(4000) = N'{
        "$ per hour" : {
            "normal rate" : 80, 
            "overtime" : 160 
        }
    }';
SELECT * FROM OPENJSON(@json, '$."$ per hour"');

Resultat:

+-------------+---------+--------+
| key         | value   | type   |
|-------------+---------+--------|
| normal rate | 80      | 2      |
| overtime    | 160     | 2      |
+-------------+---------+--------+

Eksempel 2 – JSON_QUERY()

Her er et eksempel, der bruger JSON_QUERY() .

DECLARE @json NVARCHAR(4000) = N'{
        "contact details" : {
            "client id" : 1, 
            "work phone" : "+61 987 902 029"
        }
    }';
SELECT JSON_QUERY(@json, '$."contact details"');

Resultat:

+--------------------+
| (No column name)   |
|--------------------|
| {
            "client id" : 1, 
            "work phone" : "+61 987 902 029"
        }                    |
+--------------------+

Og her er det med et dollartegn.

DECLARE @json NVARCHAR(4000) = N'{
        "$ per hour" : {
            "normal rate" : 80, 
            "overtime" : 160 
        }
    }';
SELECT JSON_QUERY(@json, '$."$ per hour"');

Resultat:

+--------------------+
| (No column name)   |
|--------------------|
| {
            "normal rate" : 80, 
            "overtime" : 160 
        }                    |
+--------------------+

Eksempel 3 – JSON_VALUE()

Dette eksempel bruger JSON_VALUE() .

DECLARE @json NVARCHAR(4000) = N'{
        "contact details" : {
            "client id" : 1, 
            "work phone" : "+61 987 902 029"
        }
    }';
SELECT JSON_VALUE(@json, '$."contact details"."work phone"');

Resultat:

+--------------------+
| (No column name)   |
|--------------------|
| +61 987 902 029    |
+--------------------+

Og her er det med et dollartegn.

DECLARE @json NVARCHAR(4000) = N'{
        "$ per hour" : {
            "normal rate" : 80, 
            "overtime" : 160 
        }
    }';
SELECT JSON_VALUE(@json, '$."$ per hour"."normal rate"') AS [Normal Rate];

Resultat:

+---------------+
| Normal Rate   |
|---------------|
| 80            |
+---------------+

  1. Opdater SQL-tilstand i MySQL

  2. MySQL IN-tilstandsgrænse

  3. Sådan konverteres tal til ord - ORACLE

  4. ProxySQL:Alle Severalnines-ressourcerne