MariaDB에서 JSON_TABLE 함수를 사용한 JSON 데이터 처리와 오류 해결

thimpu·2023년 11월 11일
      select aa.*, a.*
        from tb_pay a,
             JSON_TABLE(cancels, '$[*]' COLUMNS (
                        `transactionKey` VARCHAR(255) PATH '$.transactionKey',
                        `cancelReason` VARCHAR(255) PATH '$.cancelReason',
                        `canceledAt` DATE PATH '$.canceledAt',
                        `cancelAmount` INT PATH '$.cancelAmount'
                       )
                      ) as aa
    where aa.canceledAt = '2023-09-05'

다음과 같이 오류 나는 경우 레코드 중 JSON 포멧이 안닌 경우 가 있을 수 있음

SQL Error [4038][HY000]: (conn=97662) Syntax error in JSON text in argument 1 to function 'JSON_TABLE' at position 3

다름과 같이 null 값 필터링 후 적용하면 됨.

   select aa.*
     from (
	      select cancels
	        from tb_pay
	       where cancels is not null) a,
          JSON_TABLE(cancels, '$[*]' COLUMNS (
            `transactionKey` VARCHAR(255) PATH '$.transactionKey',
            `cancelReason` VARCHAR(255) PATH '$.cancelReason',
            `canceledAt` DATE PATH '$.canceledAt',
            `cancelAmount` INT PATH '$.cancelAmount'
           )
          ) as aa
    where 1 = 1
      and aa.canceledAt = '2023-09-05'
profile
영원한 개발자다

0개의 댓글