Search Results for 'utf8_general_ci'

1 POSTS

  1. 2011.07.27 charset 이 다른 두 테이블을 조인하기

같은 Database 안에서 테이블의 charset 이 utf8이지만 세부 charset이 다른경우 (utf8_general_ci, utf8_unicode_ci)
두개의 char나  varchar를 조인하려고 하면 다음과 같은 에러가 발생한다.

ERROR : java.sql.SQLException: Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '=

이럴경우 궁극적으로는 table의 charset을 변경하여 맞춰주는 것이 맞지만 그렇지 못할경우  collate라는 명령어로 강제로 변환하여 select 를 할수가 있다.

예를 들어 USER 테이블은 utf8_general_ci로 되어 있고  BBS 테이블은 utf8_unicode_ci 로 되어 있을 경우
SELECT U.MEMBER_ID, B.SUBJECT, B.IDX
FROM USER U, BBS B
WHERE U.MEMBER_ID = B.MEMBER_ID
ORDER BY B.IDX
의 경우 조건절에 '=' 중심으로 맞춰줄 charset 을 변경한다.

SELECT U.MEMBER_ID, B.SUBJECT, B.IDX
FROM USER U, BBS B
WHERE U.MEMBER_ID COLLATE utf8_unicode_ci = B.MEMBER_ID
ORDER BY B.IDX

or

SELECT U.MEMBER_ID, B.SUBJECT, B.IDX
FROM USER U, BBS B
WHERE U.MEMBER_ID = B.MEMBER_ID COLLATE utf8_general_ci
ORDER BY B.IDX

로 해주면 위의 에러가 발생하지 않고 데이터가 잘 나오게 된다.