Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 유니코드 문자 코드를 다루는 방법: CHAR() 함수 완벽 가이드

MySQL에서는 유니코드 문자 코드(16진수 값)를 숫자로 저장한 뒤, CHAR() 함수를 사용하여 해당 코드에 대응하는 문자로 변환할 수 있습니다. 이 글에서는 테이블 생성부터 문자 변환까지 전 과정을 예제와 함께 단계별로 살펴보겠습니다.

1. 테이블 생성

먼저 유니코드 문자 코드를 저장할 테이블을 만들어 보겠습니다.

mysql> create table DemoTable
-> (
-> Value int
-> );
Query OK, 0 rows affected (0.57 sec)

2. 데이터 삽입

INSERT 명령을 사용하여 16진수 형태의 유니코드 문자 코드를 테이블에 삽입합니다. 여기서 0x41, 0x30, 0x61은 각각 'A', '0', 'a'에 해당하는 ASCII/유니코드 코드입니다.

mysql> insert into DemoTable values(0x41);
Query OK, 1 row affected (0.12 sec)

mysql> insert into DemoTable values(0x30);
Query OK, 1 row affected (0.13 sec)

mysql> insert into DemoTable values(0x61);
Query OK, 1 row affected (0.27 sec)

3. 저장된 데이터 확인

SELECT 문을 사용하여 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

+-------+
| Value |
+-------+
| 65 |
| 48 |
| 97 |
+-------+
3 rows in set (0.00 sec)

16진수 값이 10진수 정수로 변환되어 저장된 것을 확인할 수 있습니다. 즉, 0x41은 65, 0x30은 48, 0x61은 97에 해당합니다.

4. CHAR() 함수로 문자 변환하기

이제 유니코드 문자 코드를 실제 문자로 변환하는 쿼리를 실행해 보겠습니다. MySQL의 CHAR() 함수는 정수 코드 값을 받아 해당하는 문자를 반환합니다.

mysql> select char(Value) from DemoTable;

실행 결과는 다음과 같습니다.

+-------------+
| char(Value) |
+-------------+
| A |
| 0 |
| a |
+-------------+
3 rows in set (0.00 sec)

정리

이처럼 MySQL에서는 16진수 유니코드 코드 값을 INT 컬럼에 저장하고, CHAR() 함수를 통해 손쉽게 문자로 변환할 수 있습니다. 참고로 반대 방향의 변환이 필요하다면 ORD() 또는 ASCII() 함수를 사용하여 문자를 코드 값으로 되돌릴 수도 있습니다. 이러한 기법은 문자 인코딩 처리, 데이터 검증, 특수문자 변환 등 다양한 상황에서 유용하게 활용됩니다.