본문 바로가기

db/mssql

[Mssql] Json 파싱

반응형

Mssql Json 파싱

MS SQL JSON 파싱
  • MS SQL Server에서 JSON 데이터를 파싱 하는 방법은 SQL Server 2016 버전부터 지원하는 내장 JSON 함수를 사용하는 것입니다. 다음은 MS SQL Server에서 JSON 데이터를 파싱 하는 주요 방법과 예제입니다.
주요 JSON 함수
  • JSON_VALUE : JSON 문자열에서 스칼라 값을 추출합니다. 결과 값은 문자열로 반환됩니다.
  • JSON_QUERY : JSON 문자열에서 객체 또는 배열을 추출합니다. 결과 값은 JSON 형식으로 반환됩니다.
  • JSON_MODIFY : JSON 문자열의 값을 수정합니다.
  • OPENJSON : JSON 배열을 행 집합으로 변환합니다.
JSON 데이터 작성
DECLARE @json NVARCHAR(MAX);
SET @json = N'{
    "name": "홍길동",
    "age": 30,
    "city": "서울",
    "skills": ["SQL", "C#", "JavaScript"]
}';
JSON_VALUE 예제
  • JSON_VALUE를 사용하여 스칼라 값 추출
SELECT JSON_VALUE(@json, '$.name') AS Name,
       JSON_VALUE(@json, '$.age') AS Age,
       JSON_VALUE(@json, '$.city') AS City;

JSON_VALUE 결과

 

JSON_QUERY 예제
  • JSON_QUERY를 사용하여 배열 추출
SELECT JSON_QUERY(@json, '$.skills') AS Skills;

JSON_QUERY 결과

OPENJSON 예제
  • OPENJSON을 사용하여 배열을 행 집합으로 변환
SELECT value
FROM OPENJSON(JSON_QUERY(@json, '$.skills'));

OPENJSON 결과

JSON_MODIFY 예제
  • JSON_MODIFY를 사용하여 스칼라 값 변경
SET @json = JSON_MODIFY(@json, '$.name', '이름변경됨');
SET @json = JSON_MODIFY(@json, '$.age', 31);
SET @json = JSON_MODIFY(@json, '$.city', '부산');

-- 결과 변경 후 확인
SELECT JSON_VALUE(@json, '$.name') AS Name,
       JSON_VALUE(@json, '$.age') AS Age,
       JSON_VALUE(@json, '$.city') AS City;
함께 보기
DECLARE @json NVARCHAR(MAX);
SET @json = N'{
    "name": "홍길동",
    "age": 30,
    "city": "서울",
    "skills": ["SQL", "C#", "JavaScript"]
}';

-- JSON_VALUE를 사용하여 스칼라 값 추출
SELECT JSON_VALUE(@json, '$.name') AS Name,
       JSON_VALUE(@json, '$.age') AS Age,
       JSON_VALUE(@json, '$.city') AS City;

-- JSON_QUERY를 사용하여 배열 추출
SELECT JSON_QUERY(@json, '$.skills') AS Skills;

-- OPENJSON을 사용하여 배열을 행 집합으로 변환
SELECT value
FROM OPENJSON(JSON_QUERY(@json, '$.skills'));

-- JSON_MODIFY를 사용하여 스칼라 값 변경
SET @json = JSON_MODIFY(@json, '$.name', '이름변경됨');
SET @json = JSON_MODIFY(@json, '$.age', 31);
SET @json = JSON_MODIFY(@json, '$.city', '부산');

-- JSON_VALUE를 사용하여 변경 된 스칼라 값 추출
SELECT JSON_VALUE(@json, '$.name') AS Name,
       JSON_VALUE(@json, '$.age') AS Age,
       JSON_VALUE(@json, '$.city') AS City;

 

Mssql JSON 배열, Mssql JSON 리스트 

JSON 리스트 데이터 파싱
DECLARE @json NVARCHAR(MAX);
SET @json = N'[{
    "name": "홍길동",
    "age": 30,
    "city": "서울",
    "skills": ["SQL", "C#", "JavaScript"]
},{
    "name": "홍길이",
    "age": 30,
    "city": "인천",
    "skills": ["java", "oracle", "react"]
}]';

SELECT  JSON_VALUE(value, '$.name') AS Name,
       JSON_VALUE(value, '$.age') AS Age,
       JSON_VALUE(value, '$.city') AS City
FROM OPENJSON(JSON_QUERY(@json, '$'));

JSON 배열 파싱 결과

Mssql JSON 객체 내 조회, Mssql JSON 상세 조회
DECLARE @json NVARCHAR(MAX);
SET @json = N'{
    "name": "홍길동",
    "age": 30,
    "city": "서울",
    "skills": ["SQL", "C#", "JavaScript"],
	"subjects": {
        "math": 90,
        "kor": 80,
        "eng": 70
    }
}';

-- JSON_QUERY를 사용하여 배열 추출
SELECT JSON_QUERY(@json, '$.skills') AS Skills;
SELECT JSON_QUERY(@json, '$.subjects') AS Subjects;

-- 객체내 객체 조회
SELECT JSON_VALUE(@json, '$.subjects.math') AS Skills;

-- OPENJSON을 사용하여 배열을 행 집합으로 변환
SELECT value
FROM OPENJSON(JSON_QUERY(@json, '$.skills'));

-- OPENJSON을 사용하여 배열을 행 집합으로 변환
SELECT value
FROM OPENJSON(JSON_QUERY(@json, '$.subjects'));

쿼리 결과

반응형

'db > mssql' 카테고리의 다른 글

[Mssql] 1년 날짜 입력  (0) 2025.03.22
[Mssql] JSON_MODIFY 추가, 수정  (0) 2025.03.22
MSSQL 버전 확인 하는 방법  (1) 2024.12.02
mssql 테이블 설명  (1) 2024.08.19
mssql 테이블 명세서 쿼리  (0) 2024.08.19