Skip to content
GwiyeomGo Tech Blog
About GwiyeomGo

mysql field 정렬을 원하는 순서대로 강제

MYSQL, 20252 min read

배경

쿼리조회중 created json 값에서 특정 값을 조건으로 조회했다 gpt 에 쿼리가 잘 작성했는지 확인해봤는데 JSON_EXTRACT 는 문자열이 아닌 JSON 타입을 반환하기 때문에 JSON_UNQUOTE 사용해야 더 안전하다고 한다 진짜인지 테스트 해보고 기록한다

JSON_EXTRACT 만 사용

SELECT JSON_EXTRACT('{"datetime": "2025-03-12"}', '$.datetime') AS extracted_value;
  • "2025-03-12" -- 따옴표 포함 문자열

JSON_UNQUOTE + JSON_EXTRACT

SELECT JSON_UNQUOTE(JSON_EXTRACT('{"datetime": "2025-03-12"}', '$.datetime')) AS unquoted_value;
  • 2025-03-12 -- 따옴표가 제외 문자열로

결론

  • JSON_EXTRACT 사용시 JSON 타입은 따옴표를 포함한 문자열로 처리될 수 있음
  • JSON_UNQUOTE 사용하여 따옴표 제거된 문자열을 추출한 후
  • like 문으로 사용하면 정확한 결과를 얻을 수 있다

LIKE 비교 시 문제가 발생

SELECT JSON_EXTRACT('{"datetime": "2025-03-12"}', '$.datetime') LIKE '2025-03%';

원래 조회하려던 조건에서도 JSON_UNQUOTE 를 제거하니 조회 실패되었다

© 2025 by GwiyeomGo Tech Blog. All rights reserved.