ISJSON(Transact-SQL)

적용 대상: Microsoft Fabric의 Microsoft FabricWarehouse에 있는 SQL Server 2016(13.x) 이상 Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL 분석 엔드포인트

문자열에 유효한 JSON이 포함되어 있는지 테스트합니다.

Transact-SQL 구문 표기 규칙

구문

ISJSON ( expression [, json_type_constraint] )  

인수

expression
테스트할 문자열입니다.

json_type_constraint

입력을 체크 인할 JSON 형식을 지정합니다. 유효한 값은 VALUE, ARRAY, OBJECT 또는 SCALAR입니다. SQL Server 2022(16.x)에서 도입되었습니다.

참고 항목

json_type_constraint 인수는 Azure Synapse Analytics Dedicated 풀에서 지원되지 않습니다.

반환 값

문자열에 유효한 JSON이 포함되어 있으면 1을 반환하고 그렇지 않으면 0을 반환합니다. expression이 null이면 null을 반환합니다. 문이 json_type_constraint를 생략하면 함수는 입력이 유효한 JSON 개체 또는 배열인지 테스트하여 유효하면 1을, 유효하지 않으면 0을 반환합니다. json_type_constraint가 지정된 경우 함수는 다음과 같이 JSON 형식을 확인합니다.

Description
유효한 JSON 값에 대한 테스트입니다. JSON 개체, 어레이, 숫자, 문자열 또는 세 가지 리터럴 값(false, true, null) 중 하나일 수 있습니다
ARRAY 유효한 JSON 어레이 테스트
OBJECT 유효한 JSON 개체 테스트
스칼라 유효한 JSON 스칼라 테스트 - 숫자 또는 문자열

json_type_constraint 값 SCALAR를 사용하면 최상위 수준의 JSON 스칼라 값만 포함하는 IETF RFC 8259 준수 JSON 문서를 테스트할 수 있습니다. 최상위 수준의 JSON 스칼라 값이 없는 JSON 문서는 IETF RFC 4627을 준수합니다.

오류를 반환하지 않습니다.

설명

ISJSON은 동일한 수준에서 키의 고유성을 확인하지 않습니다.

예제

예 1

다음 예제에서는 매개 변수 값 @param에 유효한 JSON이 포함되어 있으면 조건부로 명령문 블록을 실행합니다.

DECLARE @param <data type>
SET @param = <value>

IF (ISJSON(@param) > 0)  
BEGIN  
     -- Do something with the valid JSON value of @param.  
END

예제 2

다음 예제는 json_col 열에 유효한 JSON이 포함된 행을 반환합니다.

SELECT id, json_col
FROM tab1
WHERE ISJSON(json_col) = 1 

예제 3

다음 예제는 json_col 열에 유효한 최상위 수준의 JSON SCALAR가 포함된 행을 반환합니다.

SELECT id, json_col
FROM tab1
WHERE ISJSON(json_col, SCALAR) = 1 

예제 4

다음 예제에서는 입력이 유효한 JSON 값(true)이므로 1을 반환합니다.

SELECT ISJSON('true', VALUE)

예제 5

다음 예제에서는 입력이 유효하지 않은 JSON 값이므로 0을 반환합니다.

SELECT ISJSON('test string', VALUE)

예제 6

다음 예제에서는 입력이 RFC 8259에 따른 유효한 JSON 스칼라이므로 1을 반환합니다.

SELECT ISJSON('"test string"', SCALAR)

참고 항목

JSON 데이터(SQL Server)