본문 바로가기
프로그래밍 언어/쿼리문 + Oracle + MySQL

[MySQL] concat() 함수 사용시 값이 깨져서 나오는 문제 해결 방법

by 우림 2016. 10. 23.

항상 Java + Oracle 환경에서 작업하다가

이번에 개인적으로 사이트를 하나 만들고 있어서 Java + MySQL로 작업을 하고 있는데

정말 예상치 못한 곳에서 많이 막히는 걸 느낍니다.


오늘은 MySQL에서 문자열을 연결하기 위해 사용하는 concat() 함수에서 막혀서 많은 시간을 허비했네요 ㅠㅠ

이클립스 console에 에러메시지도 찍히지를 않아서 실제로는 concat() 함수에서 오류가 발생하고 있다는 사실조차 아는데 많은 시간이 걸렸습니다.



더욱이 제가 사용하는 MySQL용 Toad라는 DB 툴에서는 쿼리를 실행하면 이렇게 한글이 아무렇지도 않게 잘 나오거든요.

이러니 concat() 함수에서 문제가 발생하고 있다는 사실조차 알지 못했던거죠.



이클립스로 하나씩 하나씩 디버깅을 하는 과정에서 쿼리 중 concat()을 사용했던 verse라는 컬럼에서 한글이 깨지고 있다는 사실을 알았습니다.

어? 이거 왜 한글이 깨져서 나오지?

구글링을 하니 외국사이트에서 친절하게 알려주네요~



문자열 즉, char 또는 varchar로 구성된 컬럼을 concat() 함수로 연결하면 아무 문제도 발생하지 않는다는군요.

하지만, 제가 concat() 함수로 연결한 컬럼들은 int 형이 2개나 있었답니다.

위에서 chapter, verse라는 컬럼이 바로 int형이거든요.

cast(chapter as char) 이런식으로 문자형으로 변경을 해서 문자를 연결해주니 쉽게 해결이 되더라구요.



이젠 값이 잘 나오네요~

아~ 정말 이것 찾느라 시간도 많이 허비하고 의욕도 많이 떨어졌네요 ㅋㅋ

아무래도 오늘은 밤을 새서 남은 작업을 좀 해야할 꺼 같습니다.


댓글