본문 바로가기

Database/오류

[오류] Data truncation: Invalid JSON text in argument 1 to function json_contains: "Invalid value." at position 0.

 

Data truncation: Invalid JSON text in argument 1 to function json_contains: "Invalid value." at position 0.

=> JSON 문법 오류 

 

쿼리문의 having절 조건을 아래처럼 했더니 오류가 났다. (배열이 파라미터값을 포함하는지 확인하는 조건)

having json_contains(json_arrayagg(info.user_cd), '"#{code}"')

*** 숫자인 경우는 ' #{integer} ' 로만 감싸고, 문자열인 경우에는 ' "#{string}" ' 한번 더 감싸줘야 한다.

 

JSON_CONTAINS 함수를 사용할 때, 검사할 배열비교대상 모두 JSON 형식이어야 한다.

json_arrayagg 함수로 문자열 컬럼(user_cd)들을 JSON 배열로 만들어줬기 때문에

비교대상인 파라미터 ${code} 도 JSON형식으로 바꿔줘야 한다.

JSON_QUOTE 함수를 사용해서 일반 문자열을 JSON 호환 문자열로 변환해준다.

having json_contains(json_arrayagg(info.user_cd), JSON_QUOTE(#{code}))

 

* JSON_QUOTE 함수 => 숫자, 문자 상관없이 JSON 형식으로 변환.