Bagikan melalui


Bagaimana FOR JSON lolos karakter khusus dan karakter kontrol (SQL Server)

Berlaku untuk: SQL Server 2016 (13.x) dan yang lebih baru Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics (hanya kumpulan SQL tanpa server)

Artikel ini menjelaskan bagaimana FOR JSON klausul pernyataan SQL Server SELECT lolos dari karakter khusus dan mewakili karakter kontrol dalam output JSON.

Penting

Artikel ini menjelaskan dukungan bawaan untuk JSON di Microsoft SQL Server. Untuk informasi umum tentang pelepasan dan pengodean di JSON, lihat Bagian 2.5 dari JSON RFC.

Escape karakter khusus

Jika data sumber berisi karakter khusus, FOR JSON klausa akan lolos dalam output JSON dengan \, seperti yang ditunjukkan dalam tabel berikut. Pelepasan ini terjadi baik dalam nama properti maupun nilainya.

Karakter khusus Output yang lolos
Tanda kutip (") \"
Garis miring terbelakang (\) \\
Garis miring (/) \/
Backspace \b
Umpan formulir \f
Baris baru \n
Carriage return \r
Tab horizontal \t

Karakter kontrol

Jika data sumber berisi karakter kontrol, FOR JSON klausa mengodekannya dalam output JSON dalam \u<code> format, seperti yang ditunjukkan dalam tabel berikut.

Karakter kontrol Output yang dikodekan
CHAR(0) \u0000
CHAR(1) \u0001
... ...
CHAR(31) \u001f

Contoh

Berikut adalah contoh FOR JSON output untuk data sumber yang mencakup karakter khusus dan karakter kontrol.

Kueri:

SELECT 'VALUE\    /
  "' AS [KEY\/"],
    CHAR(0) AS '0',
    CHAR(1) AS '1',
    CHAR(31) AS '31'
FOR JSON PATH;

Hasil:

[
    {
        "KEY\\\/\"": "VALUE\\    \/\r\n  \"",
        "0": "\u0000",
        "1": "\u0001",
        "31": "\u001f"
    }
]

Langkah berikutnya