MySQL의 CONV() 함수에서 사용할 수 있는 진수(base)에는 명확한 하한과 상한이 존재합니다. 진수 값은 반드시 2보다 크고 36보다 작아야 하며, 즉 하한은 2, 상한은 36입니다. 이 제한은 from_base(원래 진수)와 to_base(변환할 진수) 두 값 모두에 동일하게 적용됩니다.
범위를 벗어난 진수를 입력하면 어떻게 될까?
만약 허용 범위(2~36)를 벗어나는 진수 값을 인자로 전달하면, MySQL은 오류를 발생시키지 않고 NULL을 반환합니다. 아래 예제를 통해 실제 동작을 확인할 수 있습니다.
예제 1: 상한(36)을 초과하는 경우
mysql> Select CONV(10,10,38); +----------------+ | CONV(10,10,38) | +----------------+ | NULL | +----------------+ 1 row in set (0.00 sec)
변환 대상 진수로 38을 지정했기 때문에 상한인 36을 초과하여 NULL이 반환됩니다.
예제 2: 원래 진수(from_base)가 범위를 벗어나는 경우
mysql> Select CONV(10,72,2); +---------------+ | CONV(10,72,2) | +---------------+ | NULL | +---------------+ 1 row in set (0.00 sec)
이번에는 from_base 값으로 72를 지정했습니다. 역시 허용 범위를 훨씬 벗어나므로 NULL이 출력됩니다.
예제 3: 하한(2) 미만의 값을 입력하는 경우
mysql> Select CONV(10,10,1); +---------------+ | CONV(10,10,1) | +---------------+ | NULL | +---------------+ 1 row in set (0.00 sec)
진수 1은 하한인 2 미만이므로 유효하지 않으며, 마찬가지로 NULL이 반환됩니다.
정리
CONV() 함수의 진수 인자는 2에서 36 사이의 값만 유효합니다. 이 범위를 벗어나는 값이 from_base 또는 to_base 중 어느 쪽에든 입력되면 MySQL은 에러 메시지 없이 조용히 NULL을 반환하므로, 쿼리 작성 시 진수 값의 유효 범위를 항상 확인하는 것이 좋습니다.