๐ IN ์ฐ์ฐ์
์ฌ๋ฌ ์กฐ๊ฑด ์ค ํ๋๋ผ๋ ์ถฉ์กฑํ๋์ง ํ์ธํ๊ณ ์ถ์ ๋,
OR ์กฐ๊ฑด์ ์ฌ๋ฌ ๊ฐ ์ค ํ์์์ด,
IN ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋์ ๊ดํธ ์์ ์กฐ๊ฑด์ ๋ค ๋ฃ์ด์ ๋น๊ต๊ฐ๋ฅํ๋ค.
โ๏ธ ํ๋ก๊ทธ๋๋จธ์ค SQL ๋ฌธ์ ๋ก ์์๋ฅผ ๋ค์ด๋ณด์
SELECT ID, EMAIL, FIRST_NAME, LAST_NAME
FROM DEVELOPER_INFOS
WHERE SKILL_1 = 'Python' OR SKILL_2 = 'Python' OR SKILL_3 = 'Python' -- OR ์ฌ๋ฌ ๊ฐ
ORDER BY ID
SELECT ID, EMAIL, FIRST_NAME, LAST_NAME
FROM DEVELOPER_INFOS
WHERE 'Python' IN (SKILL_1, SKILL_2, SKILL_3)
ORDER BY ID
์ฒซ๋ฒ์งธ๋ OR ์กฐ๊ฑด๋ฌธ์ ์ฌ๋ฌ ๊ฐ ์์ฑํด์ Skill 1, 2, 3 ์ค์ 'Python' ์ด ํ๋๋ผ๋ ์๋์ง๋ฅผ ์ฐพ์ ๋ฐ๋ฉด์
๋๋ฒ์งธ๋ IN() ์์ ์กฐ๊ฑด Skill 1, 2, 3์ ๋ชจ๋ ๋ฃ์ด ์ด ์ค ํ๋๋ผ๋ ์๋์ง๋ฅผ ๋น๊ตํ์๋ค.
๐ & ( AND ๋นํธ ์ฐ์ฐ์)
๋นํธ๋ ์ปดํจํ ๋ฐ ๋์งํธ ํต์ ์ ์ ๋ณด๋จ์๋ค. 2์ง์(binary)๋ก์จ 0๋๋ 1์ ๊ฐ์ ๊ฐ์ง๋ฉฐ ๋ ผ๋ฆฌ์ํ๋ฅผ ๋ํ๋ธ๋ค.
& ๋นํธ ์ฐ์ฐ์๋ ์ ๋ ฅ ์์ ์๋ ์์ชฝ ๋นํธ์ ๊ฐ์ด ๋ชจ๋ 1์ด๋ฉด 1๋ก ์ค์ ๋๊ณ , ๊ทธ๋ ์ง ์์ ๋๋จธ์ง ๊ฒฝ์ฐ๋ 0์ผ๋ก ์ค์ ๋๋ค.
------------------------
1, 1 → 1
1, 0 → 0
0, 1 → 0
0, 0 → 0
------------------------
์์) a = 170์ด๊ณ b = 75์ผ ๋ & ์ฐ์ฐ์ ์ฌ์ฉ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํด๋ณด์
# a = 170
# b = 75
SELECT a_value & b_value
FROM bitwise;

SELECT CONV(a_value, 10, 2), CONV(b_value, 10, 2)
FROM bitwise;

170๊ณผ 75์ ์ด์ง์
------------------------
10101010
01001011
→ 1010
------------------------
โ๏ธ ํ๋ก๊ทธ๋๋จธ์ค SQL ๋ฌธ์ ๋ก ํ์ฉ ์์ ๋ฅผ ํ์ธํด๋ณด์


skill_code๊ฐ front end์ ํด๋นํ๋ ๊ฐ๋ฐ์๋ฅผ ์ฐพ๋ ๋ฌธ์ ์ด๋ค.
๋ฌธ์ ํฌ์ธํธ๋ skill_code๊ฐ 400 (=b'110010000')์ด 16 (=b'10000')์ ํฌํจํ๋ค๋ ๊ฒ์ ์ฝ๋์ ๋ํ๋ด์ผ ํ๋ค.
select ID, EMAIL, FIRST_NAME, LAST_NAME
from DEVELOPERS
where SKILL_CODE & (select sum(CODE) from SKILLCODES where CATEGORY = 'Front End')
order by ID
์ ๋ต์ ์ด๊ฑด๋ฐ ๋๋ ํ์ฐธ์ ์ฐพ์๋ณด๊ณ ๊ณ ๋ฏผํด๋ด์ผ ๋๋ค.
1. & ๋นํธ ์ฐ์ฐ์์ ๋ํด ์์์ผํ๊ณ
2. ๋ณดํต where ์กฐ๊ฑด๋ฌธ์๋ ~์ด๋ค/~์๋๋ค ๊ฐ์ ๋น๊ต ์ฐ์ฐ์๊ฐ ์ค๋๋ฐ ์ ์ฝ๋๋ ๊ฒฐ๊ณผ๊ฐ์ด ์ถ๋ ฅ๋๋ ๊ฒ์ด ์๋๊ฐ? ํ๋ ์๋ฌธ์ด ๋ค์๋ค.
skill_code & ์๋ธ์ฟผ๋ฆฌ๋ ๋นํธ AND ์ฐ์ฐ์ผ๋ก, skill_code์์ ์๋ธ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ์ ํด๋นํ๋ ๋นํธ๋ง ์ถ์ถํ๋ ์ฐ์ฐ์ด๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก, ๋นํธ ์ฐ์ฐ์๊ฐ where ์กฐ๊ฑด๋ฌธ์ ์ฌ ๋, ์กฐ๊ฑด 1 & ์กฐ๊ฑด 2 → 1 ์ ์ถฉ์กฑํ๋ skill_code๋ฅผ ๊ฐ์ง ๊ฐ๋ฐ์๋ฅผ ๊ฒ์ํ๋ ๊ฒ์ผ๋ก ์ดํดํ๋ค.
Join์ ์ด์ฉํ ํ์ด ๋ฐฉ๋ฒ๋ ์๋๋ฐ ์ด ์ฝ๋๊ฐ ๋ํํ ๋ ์ข ๋ ์ง๊ด์ ์ผ๋ก ์ดํด๊ฐ ๊ฐ๋ค.
์ฐธ๊ณ ์ฌ์ดํธ : https://learn.microsoft.com/ko-kr/sql/t-sql/language-elements/bitwise-and-transact-sql?view=sql-server-ver16
&(๋นํธ AND)(Transact-SQL) - SQL Server
&(๋นํธ AND)(Transact-SQL)
learn.microsoft.com
ํ๋ก๊ทธ๋๋จธ์ค ๋ฌธ์ : https://school.programmers.co.kr/learn/courses/30/lessons/276035