MySQL의 EXPORT_SET() 함수는 인수로 전달된 값 중 하나라도 NULL이면 결과로 NULL을 반환합니다. 즉, 다섯 개의 인수 중 어느 하나가 NULL이라면 함수는 정상적인 비트 문자열 대신 NULL을 돌려줍니다.
EXPORT_SET() 함수란?
본격적으로 살펴보기 전에 함수의 기본 구조를 간단히 짚어보겠습니다.
EXPORT_SET(bits, on, off[, separator[, number_of_bits]])
- bits: 비트 단위로 검사할 숫자 값
- on: 해당 비트가 1(설정됨)일 때 표시되는 문자열
- off: 해당 비트가 0(해제됨)일 때 표시되는 문자열
- separator: 각 결과를 구분하는 구분자 (기본값은 콤마 ',')
- number_of_bits: 검사할 비트 수 (기본값은 64, 최대 64까지 지정 가능)
인수에 NULL이 포함된 경우의 동작
아래 예제들은 다섯 개 인수 중 하나씩 NULL을 넣었을 때 모두 NULL이 반환되는 것을 보여줍니다.
1. 첫 번째 인수(bits)가 NULL인 경우
mysql> Select EXPORT_SET(NULL, 'Y','N',',', 4); +----------------------------------+ | EXPORT_SET(NULL, 'Y','N',',', 4) | +----------------------------------+ | NULL | +----------------------------------+ 1 row in set (0.00 sec)
2. 두 번째 인수(on)가 NULL인 경우
mysql> Select EXPORT_SET(5, NULL,'N',',', 4); +--------------------------------+ | EXPORT_SET(5, NULL,'N',',', 4) | +--------------------------------+ | NULL | +--------------------------------+ 1 row in set (0.00 sec)
3. 세 번째 인수(off)가 NULL인 경우
mysql> Select EXPORT_SET(5, 'Y','N',',', NULL); +----------------------------------+ | EXPORT_SET(5, 'Y','N',',', NULL) | +----------------------------------+ | NULL | +----------------------------------+ 1 row in set (0.00 sec)
4. 네 번째 인수(separator)가 NULL인 경우
mysql> Select EXPORT_SET(5, 'Y','N',NULL, 4); +--------------------------------+ | EXPORT_SET(5, 'Y','N',NULL, 4) | +--------------------------------+ | NULL | +--------------------------------+ 1 row in set (0.00 sec)
정리
위 예제에서 확인할 수 있듯이, EXPORT_SET() 함수는 어떤 위치의 인수가 NULL이더라도 무조건 NULL을 반환합니다. 따라서 실무에서 이 함수를 사용할 때는 컬럼 값이나 변수에 NULL이 포함될 가능성이 있는지 반드시 확인해야 하며, 필요하다면 IFNULL() 또는 COALESCE() 같은 함수를 함께 사용해 NULL 처리를 해주는 것이 안전합니다.