FOR JSON이 특수 문자 및 제어 문자를 이스케이프 처리하는 방법(SQL Server)
적용 대상: SQL Server 2016(13.x) 이상 Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics (서버리스 SQL 풀 한정)
이 문서에서는 SQL Server SELECT
문의 FOR JSON
절이 특수 문자를 이스케이프 처리하고 JSON 출력에서 제어 문자를 표시하는 방법에 대해 설명합니다.
Important
이 문서에서는 Microsoft SQL Server의 JSON에 대한 기본 제공 지원에 대해 설명합니다. JSON의 이스케이프 및 인코딩에 대한 일반적인 내용은 JSON RFC의 섹션 2.5를 참조하세요.
특수 문자 이스케이프
원본 데이터에 특수 문자가 포함된 경우 FOR JSON
절은 다음 테이블과 같이 \
를 사용하여 JSON 출력에서 특수문자를 이스케이프합니다. 속성 이름과 해당 값에서 모두 특수 문자가 이와 같이 이스케이프 처리됩니다.
특수 문자 | 이스케이프된 출력 |
---|---|
물음표(" ) |
\" |
백슬래시(\ ) |
\\ |
슬래시(/ ) |
\/ |
백스페이스 | \b |
폼 피드 | \f |
줄 바꿈 | \n |
캐리지 리턴 | \r |
가로 탭 | \t |
컨트롤 문자
원본 데이터에 컨트롤 문자가 포함된 경우 FOR JSON
절은 다음 테이블과 같이 \u<code>
형식의 JSON 출력에 컨트롤 문자를 인코딩합니다.
제어 문자 | 인코딩된 출력 |
---|---|
CHAR(0) | \u0000 |
CHAR(1) | \u0001 |
... | ... |
CHAR(31) | \u001f |
예시
다음은 특수 문자와 컨트롤 문자를 모두 포함하는 원본 데이터에 대한 FOR JSON
출력의 예입니다.
쿼리:
SELECT 'VALUE\ /
"' AS [KEY\/"],
CHAR(0) AS '0',
CHAR(1) AS '1',
CHAR(31) AS '31'
FOR JSON PATH;
결과:
[
{
"KEY\\\/\"": "VALUE\\ \/\r\n \"",
"0": "\u0000",
"1": "\u0001",
"31": "\u001f"
}
]