DB/Maria & Mysql
[ Mysql Concat 한글깨짐 ]
Mr콩랑
2011. 1. 13. 14:02
반응형
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 랑이씀 -
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 랑이씀 -
반응형