MySQL ORD() 함수란?
MySQL의 ORD() 함수는 문자열에서 가장 왼쪽에 있는 문자가 멀티바이트(multi-byte) 문자일 경우, 해당 문자의 코드를 다음 공식을 사용하여 반환합니다.
(첫 번째 바이트 코드) + (두 번째 바이트 코드 × 256) + (세 번째 바이트 코드 × 256²)
반면 ASCII() 함수는 주어진 문자열에서 가장 왼쪽 문자의 ASCII 값을 그대로 반환합니다.
ORD()와 ASCII()의 차이점
두 함수의 차이는 가장 왼쪽 문자가 멀티바이트 문자인지 여부에 따라 결정됩니다. 만약 가장 왼쪽 문자가 멀티바이트 문자가 아니라면, ORD()와 ASCII() 함수는 동일한 결과를 반환합니다.
예제로 확인하기
다음 예제를 통해 두 함수가 싱글바이트 문자에 대해 같은 결과를 반환하는 것을 확인할 수 있습니다.
mysql> Select ORD('Tutorialspoint');
+-----------------------+
| ORD('Tutorialspoint') |
+-----------------------+
| 84 |
+-----------------------+
1 row in set (0.00 sec)
mysql> Select ASCII('Tutorialspoint');
+-------------------------+
| ASCII('Tutorialspoint') |
+-------------------------+
| 84 |
+-------------------------+
1 row in set (0.00 sec)위 예제에서 볼 수 있듯이, 영문자 'T'와 같은 싱글바이트 문자에 대해서는 두 함수 모두 84라는 동일한 값을 반환합니다.
하지만 한글이나 한자처럼 여러 바이트로 구성된 멀티바이트 문자가 입력될 경우에는 결과가 달라집니다. 이때 ORD()는 위 공식에 따라 각 바이트 값을 조합하여 계산한 코드를 반환하는 반면, ASCII()는 첫 번째 바이트의 값만 반환한다는 점에서 차이가 있습니다.
정리
- 공통점: 가장 왼쪽 문자가 싱글바이트(ASCII 범위) 문자일 때 두 함수는 동일한 값을 반환합니다.
- 차이점: 멀티바이트 문자가 입력되면 ORD()는 바이트 값을 조합한 코드를 반환하고, ASCII()는 첫 번째 바이트 값만 반환합니다.