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

MySQL에서 16진수 값의 기본 유형은 무엇일까?

MySQL에서 16진수 값의 기본 유형

MySQL에서 16진수(헥사데시멀) 값은 사용되는 문맥에 따라 서로 다르게 해석됩니다. 숫자가 필요한 문맥(numeric context)에서는 정수처럼 동작하고, 문자열이 필요한 문맥(string context)에서는 바이너리 문자열처럼 동작합니다.

문자열 문맥에서의 16진수 값

다음 예제를 통해 이를 쉽게 이해할 수 있습니다.

mysql> SELECT X'5455544F5249414C53504F494E54';
+---------------------------------+
| X'5455544F5249414C53504F494E54' |
+---------------------------------+
| TUTORIALSPOINT                  |
+---------------------------------+
1 row in set (0.07 sec)

위 예제에서 X'...' 표기법으로 작성된 16진수 값은 문자열 문맥에서 평가되었습니다. 따라서 각 바이트가 해당하는 ASCII 문자로 변환되어 'TUTORIALSPOINT'라는 문자열로 출력된 것입니다.

숫자 문맥에서의 16진수 값

반면, 같은 값을 숫자 문맥에서 사용하면 정수로 취급됩니다. 예를 들어 SELECT 0x41 + 0;을 실행하면 결과로 65가 반환됩니다. 이는 16진수 0x41이 정수 65로 해석되었기 때문입니다.

결론: 기본 유형은 문자열

그렇다면 MySQL에서 16진수 값의 기본 유형은 무엇일까요? 정답은 문자열(string)입니다. 별도의 변환 없이 그대로 사용할 경우, 16진수 리터럴은 기본적으로 문자열로 처리됩니다.

만약 이를 숫자로 명시적으로 다루고 싶다면 CAST(... AS UNSIGNED)를 사용하거나 +0과 같은 산술 연산을 활용해 명시적으로 변환할 수 있습니다.