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

MySQL MAKE_SET() 함수란 무엇일까? 개념과 사용법 정리

MySQL의 MAKE_SET() 함수는 10진수를 비트(2진수)로 변환한 뒤, 해당 수에서 설정된(set) 모든 비트에 대응하는 문자열을 쉼표로 구분된 집합 형태로 반환하는 함수입니다. 이때 첫 번째 문자열은 최하위 비트에, 두 번째 문자열은 그다음 비트에 순서대로 매핑됩니다.

문법(Syntax)

MAKE_SET(bits, str1, str2,…)
  • bits: 10진수 또는 2진수 값을 가질 수 있는 표현식입니다.
  • str1, str2…: 각 비트에 대응되는 문자열 목록입니다.

동작 원리

MAKE_SET() 함수는 전달받은 숫자를 2진수로 해석한 후, 각 비트 자리가 1인 경우에만 해당 위치의 문자열을 결과에 포함시킵니다. 비트가 0이면 해당 문자열은 결과에서 제외되며, NULL로 지정된 문자열 역시 결과 집합에 포함되지 않습니다.

예제(Example)

mysql> Select MAKE_SET(1|2|4, 'Tutorials','Point','.com');

+---------------------------------------------+
| MAKE_SET(1|2|4, 'Tutorials','Point','.com') |
+---------------------------------------------+
| Tutorials,Point,.com                        |
+---------------------------------------------+

1 row in set (0.00 sec)

결과 분석

위 예제에서 1|2|4는 비트 OR 연산으로 결합된 값 7(2진수 111)을 의미합니다. 각 비트를 살펴보면 다음과 같습니다.

  • 첫 번째 비트: 1(001) → 가장 오른쪽 자리가 1이므로 'Tutorials' 반환
  • 두 번째 비트: 2(010) → 가운데 자리가 1이므로 'Point' 반환
  • 세 번째 비트: 4(100) → 가장 왼쪽 자리가 1이므로 '.com' 반환

따라서 세 문자열이 모두 포함되어 최종 결과로 'Tutorials,Point,.com'이 출력됩니다. 만약 특정 비트가 0이라면 해당 위치의 문자열은 결과에서 빠지게 됩니다. 예를 들어 MAKE_SET(5, 'A','B','C')의 경우 5는 2진수로 101이므로 첫 번째와 세 번째 비트만 설정되어 'A,C'가 반환됩니다.