다음을 통해 공유


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

다음 단계