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"
}
]