반응형
Mysql Query 에서 한글이 깨지는 현상이 발생하였다.

Concat에서 문자열과 숫자를 Concat하니 한글깨짐현상이 나오는데 이걸 해결해야한다.

다음과 같은 쿼리를 보자.

[1] 테이블 정보
mysql> desc tb_menu_m;
+-----------------+------------------+------+-----+---------+----------------+
| Field           | Type             | Null | Key | Default | Extra          |
+-----------------+------------------+------+-----+---------+----------------+
| menu_seq        | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| menu_title      | varchar(50)      | NO   |     | NULL    |                |
| menu_url        | varchar(200)     | YES  |     | NULL    |                |
| menu_parent_seq | int(10) unsigned | NO   |     | NULL    |                |
| menu_level      | int(10) unsigned | NO   |     | NULL    |                |
| menu_position   | int(10) unsigned | NO   |     | NULL    |                |
| menu_left       | int(10) unsigned | YES  |     | NULL    |                |
| menu_right      | int(10) unsigned | YES  |     | NULL    |                |
| menu_type       | varchar(10)      | YES  |     | NULL    |                |
| comment         | varchar(200)     | NO   |     | NULL    |                |
| register_time   | datetime         | NO   |     | NULL    |                |
| modfiy_time     | datetime         | YES  |     | NULL    |                |
+-----------------+------------------+------+-----+---------+----------------+
12 rows in set (0.00 sec)


[2] 한글깨짐 쿼리
mysql> select concat(menu_title,menu_seq) from tb_menu_m limit 1;
+-----------------------------+
| concat(menu_title,menu_seq) |
+-----------------------------+
| ?쒖뒪?쒓?由?            |
+-----------------------------+
1 row in set (0.00 sec)

[3] 해결방안
위내역은 menu_seq가 int형이기 때문이다. 저놈을 char로 캐스팅을 하면 괜찮아진다.
mysql> select concat(menu_title,cast(menu_seq as char)) from tb_menu_m limit 1;
+-------------------------------------------+
| concat(menu_title,cast(menu_seq as char)) |
+-------------------------------------------+
| 시스템관리1                               |
+-------------------------------------------+
1 row in set (0.00 sec)

간단하지만 concat는 컬럼이 다른경우 저런현상을 나타냄을 경험을 통해 알수 있었다.

이상 랑이의 ㅋㅋ 경험담. 끝
 
                                                                           - 2011-01-13 랑이씀 -


반응형

+ Recent posts