FOR JSON이 특수 문자 및 제어 문자를 이스케이프 처리하는 방법(SQL Server)

적용 대상: SQL Server 2016(13.x) 이상 Azure SQL DatabaseAzure SQL Managed InstanceAzure 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 다음 표와 같이 JSON 출력 형식 \u<code> 으로 인코딩합니다.

컨트롤 문자 인코딩된 출력
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"
    }
]

다음 단계