Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara Mereferensikan Kunci JSON yang Mengandung Karakter Khusus saat menggunakan OPENJSON, JSON_QUERY, dan JSON_VALUE (SQL Server)

Jika Anda menggunakan fungsi T-SQL seperti OPENJSON() , JSON_QUERY() , atau JSON_VALUE() , Anda mungkin mewaspadai karakter non-alfanumerik yang mungkin ada dalam dokumen JSON yang sedang Anda kerjakan. Terutama jika karakter khusus tersebut ada dalam nama kunci, dan Anda perlu merujuk nama kunci tersebut.

Misalnya, Anda dapat memiliki nama kunci yang berisi spasi (seperti "first name" ), atau tanda dolar ($ ).

Untungnya, setiap kali Anda mereferensikan kunci tersebut, Anda cukup mengapit nama kunci dengan tanda kutip ganda.

Contoh 1 – OPENJSON()

Berikut adalah contoh referensi kunci dengan spasi di namanya saat menggunakan OPENJSON() .

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

Hasil:

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

Ini contoh lain, kali ini kita memiliki tanda dolar di nama kuncinya.

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

Hasil:

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

Contoh 2 – JSON_QUERY()

Berikut ini contoh menggunakan JSON_QUERY() .

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

Hasil:

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

Dan ini dia dengan tanda dolar.

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

Hasil:

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

Contoh 3 – JSON_VALUE()

Contoh ini menggunakan 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"');

Hasil:

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

Dan ini dia dengan tanda dolar.

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

Hasil:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara menggunakan RANK() di SQL Server

  2. 4 Cara untuk Memeriksa Apakah Tabel Ada Sebelum Menjatuhkannya di SQL Server (T-SQL)

  3. pyodbc - kecepatan penyisipan massal yang sangat lambat

  4. Saya tidak dapat memulai browser SQL Server

  5. Bisakah saya terhubung ke SQL Server menggunakan Otentikasi Windows dari aplikasi web Java EE?