체크박스의 값 들을 하나의 행으로 저장하고 싶을 때 비트 연산을 사용한다.
1. 준비 작업
- CourseCode 가 추가될 때 마다 배수로 값을 넣어준다 (1 -> 2 -> 4 -> 8 -> 16 -> 32 -> 64 -> 128 -> 256...)
CREATE TABLE #T1
(
CourseName varchar(10),
CourseCode bigint
)
INSERT #T1 VALUES ('광고' ,1)
INSERT #T1 VALUES ('홍보' ,2)
INSERT #T1 VALUES ('전단지' ,4)
INSERT #T1 VALUES ('지인추천' ,8)
INSERT #T1 VALUES ('프로모션' ,16)
INSERT #T1 VALUES ('기타' ,32)
2. 위 테이블에서 "전단지" 만 선택했을 때
DECLARE @CheckValue bigint
SET @CheckValue = 4
SELECT *
FROM #T1
WHERE (CourseCode & @CheckValue) > 0
3. 위 테이블에서 "광고, 홍보, 지인추천, 기타" 를 선택 했을 때.
- CourseCode 값을 기준으로 광고1, 홍보2, 지인추천8, 기타32 기 때문에
- 1+2+8+32 = 43
DECLARE @CheckValue bigint
SET @CheckValue = 43
SELECT *
FROM #T1
WHERE (CourseCode & @CheckValue) > 0
WHERE 절 기준 찾을 (컬럼명 & 선택값) 이 True 일 경우에 다중 선택 값들이 나오게 된다.
예제로 들려던 부분과 다르게 어쩌다보니.. 예제 컬럼명이 Course 가 되어 있음..
'DB > SQLServer' 카테고리의 다른 글
프로시저에 TRY/CATCH 와 트랜잭션 (0) | 2024.09.04 |
---|---|
Poor Man's T-SQL Formatter SSMS 쿼리 들여쓰기 정리 (1) | 2024.08.29 |
DB내 프로시저/함수/뷰 내 속해있는 문자열 검새 (0) | 2020.06.05 |
DB에 속한 테이블 용량 및 사이즈를 알아보기 (0) | 2020.06.02 |
날짜 또는 시간 문자열 포맷 형식 (0) | 2020.06.01 |