Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách tham chiếu các khóa JSON có chứa các ký tự đặc biệt khi sử dụng OPENJSON, JSON_QUERY và JSON_VALUE (SQL Server)

Nếu bạn đang sử dụng một hàm T-SQL chẳng hạn như OPENJSON() , JSON_QUERY() hoặc JSON_VALUE() , bạn có thể cảnh giác với bất kỳ ký tự không phải chữ và số nào có thể có trong tài liệu JSON mà bạn đang làm việc. Đặc biệt nếu các ký tự đặc biệt đó nằm trong tên khóa và bạn cần tham chiếu các tên khóa đó.

Ví dụ:bạn có thể có một tên khóa chứa khoảng trắng (như "first name" ), hoặc một ký hiệu đô la ($ ).

May mắn thay, bất cứ khi nào bạn tham chiếu đến các khóa như vậy, bạn có thể chỉ cần đặt tên khóa trong dấu ngoặc kép.

Ví dụ 1 - OPENJSON()

Dưới đây là một ví dụ về tham chiếu khóa có khoảng trắng trong tên của nó khi sử dụng OPENJSON() .

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

Kết quả:

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

Đây là một ví dụ khác, lần này chúng ta có ký hiệu đô la trong tên khóa.

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

Kết quả:

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

Ví dụ 2 - JSON_QUERY()

Đây là một ví dụ sử dụng JSON_QUERY() .

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

Kết quả:

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

Và đây là ký hiệu đô la.

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

Kết quả:

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

Ví dụ 3 - JSON_VALUE()

Ví dụ này sử dụng 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"');

Kết quả:

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

Và đây là ký hiệu đô la.

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

Kết quả:

+---------------+
| 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. Cách sử dụng hàm IDENTITY () trong SQL Server

  2. Cách INTERSECT hoạt động trong SQL Server

  3. Cách thêm khóa chính vào bảng hiện có trong SQL Server (ví dụ T-SQL)

  4. Cách sử dụng SQL Server Hàm T-SQL SUM:5 Trường hợp sử dụng

  5. Kiến trúc SQL Server AlwaysOn (Nhóm khả dụng) và Cài đặt từng bước -2