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

MySQL MAKE_SET() 함수가 NULL을 반환하는 경우와 NULL 처리 방식

MySQL MAKE_SET() 함수의 NULL 반환 조건

MySQL의 MAKE_SET() 함수는 첫 번째 인수로 전달된 비트(bits) 값이 NULL일 경우 결과 전체를 NULL로 반환합니다. 반면, 두 번째 인수부터 전달되는 문자열 목록 중간에 포함된 NULL 값은 오류 없이 단순히 무시되며, 유효한 문자열들만으로 결과 집합을 구성합니다.

예제

아래 예제를 통해 MAKE_SET() 함수의 NULL 처리 방식을 직접 확인할 수 있습니다.

mysql> Select MAKE_SET(NULL, 'A','B','C');
+-----------------------------+
| MAKE_SET(NULL, 'A','B','C') |
+-----------------------------+
| NULL                        |
+-----------------------------+
1 row in set (0.00 sec)

mysql> Select MAKE_SET(2, NULL,'B',NULL);
+----------------------------+
| MAKE_SET(2, NULL,'B',NULL) |
+----------------------------+
| B                          |
+----------------------------+
1 row in set (0.00 sec)

결과 분석

첫 번째 쿼리: 비트 값 자체가 NULL로 전달되었기 때문에 MAKE_SET() 함수는 어떤 문자열도 선택할 수 없으며, 최종 결과로 NULL을 반환합니다.

두 번째 쿼리: 비트 값이 2(이진수 10)이므로 두 번째 위치의 문자열인 'B'가 선택 대상입니다. 해당 위치의 값이 'B'이므로 함수는 정상적으로 'B'를 반환하며, 다른 위치에 있는 NULL 값들은 결과 집합 형성 과정에서 무시됩니다.

정리

  • 비트 값(첫 번째 인수)이 NULL이면 → 함수 전체가 NULL을 반환
  • 문자열 인수 중 일부가 NULL이면 → 해당 문자열만 무시되고 나머지 유효한 문자열로 집합 구성

따라서 MAKE_SET() 함수를 사용할 때는 첫 번째 비트 인수에 NULL이 들어가지 않도록 주의해야 하며, 문자열 인수에 NULL이 포함될 가능성이 있다면 IFNULL() 등의 함수로 미리 처리해 주는 것이 안전합니다.