MySQL에서 CHAR()의 역함수는 무엇일까?
MySQL에서 CHAR() 함수의 반대 기능을 수행하는 함수는 바로 ASCII()와 ORD()입니다. 두 함수는 비슷해 보이지만 약간의 차이가 있습니다.
- ASCII(): 문자열에서 가장 왼쪽 문자의 숫자 값(ASCII 코드)을 반환합니다.
- ORD(): 인수로 전달된 문자열에서 가장 왼쪽 문자의 문자 코드를 반환합니다.
실제 예제를 통해 두 함수의 동작 방식을 확인해 보겠습니다.
1. 테이블 생성하기
먼저 아래와 같이 테스트용 테이블을 생성합니다.
mysql> create table DemoTable
(
Value int,
Value1 char(1),
Value2 char(1)
);
Query OK, 0 rows affected (0.80 sec)2. 레코드 삽입하기
INSERT 명령을 사용해 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable values(65,'A','A'); Query OK, 1 row affected (0.18 sec) mysql> insert into DemoTable values(97,'a','a'); Query OK, 1 row affected (0.13 sec)
3. 저장된 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+-------+--------+--------+ | Value | Value1 | Value2 | +-------+--------+--------+ | 65 | A | A | | 97 | a | a | +-------+--------+--------+ 2 rows in set (0.00 sec)
4. ASCII()와 ORD() 함수 적용하기
이제 CHAR(), ASCII(), ORD() 함수를 함께 사용하여 결과를 비교해 보겠습니다.
mysql> select char(Value),ASCII(Value1),ORD(Value2) from DemoTable;
실행 결과는 다음과 같습니다.
+-------------+---------------+-------------+ | char(Value) | ASCII(Value1) | ORD(Value2) | +-------------+---------------+-------------+ | A | 65 | 65 | | a | 97 | 97 | +-------------+---------------+-------------+ 2 rows in set (0.03 sec)
결과 분석
위 결과를 보면 다음과 같은 사실을 알 수 있습니다.
- char(Value): 숫자 값 65와 97을 각각 문자 'A'와 'a'로 변환했습니다.
- ASCII(Value1): 문자 'A'와 'a'의 ASCII 코드인 65와 97을 반환했습니다.
- ORD(Value2): 마찬가지로 문자 'A'와 'a'의 문자 코드인 65와 97을 반환했습니다.
즉, 일반적인 영문자의 경우 ASCII()와 ORD()는 동일한 값을 반환하지만, 멀티바이트 문자를 다룰 때는 첫 번째 바이트만 처리한다는 점에서 차이가 있을 수 있습니다. CHAR() 함수로 변환한 문자를 다시 숫자 코드로 되돌리고 싶다면 이 두 함수를 상황에 맞게 활용하면 됩니다.