반응형
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 랑이씀 -
반응형
'DB > Maria & Mysql' 카테고리의 다른 글
[ MYSQL PROCESS LIST 보기 ] (0) | 2011.12.27 |
---|---|
PK & UI 무엇이 올바른가? (0) | 2011.01.31 |
[ WINDOWS OS 에서 MYSQL5.X ROOT 비밀번호 분실] (0) | 2011.01.04 |
MYSQL Tinyint(1) 의 의미 (2) | 2010.07.27 |
[MYSQL GRANT를 이용한 권한 설정] (0) | 2010.07.16 |