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 형식으로 변환.
'Database > 오류' 카테고리의 다른 글
[오류] Parameter index out of range (2 > number of parameters, which is 1). (0) | 2024.04.14 |
---|