๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
SQL/Programmers

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค][SQL-SELECT] ๊ฐ•์›๋„์— ์œ„์น˜ํ•œ ์ƒ์‚ฐ๊ณต์žฅ ๋ชฉ๋ก ์ถœ๋ ฅํ•˜๊ธฐ

by ์ด๋ฎด 2023. 7. 2.
728x90

๐Ÿ’ป ๋ฌธ์ œ ์ฃผ์†Œ : https://school.programmers.co.kr/learn/courses/30/lessons/131112 

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

๐Ÿ’ป ๋ฌธ์ œ ์„ค๋ช…

๋‹ค์Œ์€ ์‹ํ’ˆ๊ณต์žฅ์˜ ์ •๋ณด๋ฅผ ๋‹ด์€ FOOD_FACTORY ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. FOOD_FACTORY ํ…Œ์ด๋ธ”์€ ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ FACTORY_ID, FACTORY_NAME, ADDRESS, TLNO๋Š” ๊ฐ๊ฐ ๊ณต์žฅ ID, ๊ณต์žฅ ์ด๋ฆ„, ์ฃผ์†Œ, ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

Column name Type Nullable
FACTORY_ID VARCHAR(10) FALSE
FACTORY_NAME VARCHAR(50) FALSE
ADDRESS VARCHAR(100) FALSE
TLNO VARCHAR(20) TRUE

 

๐Ÿ’ป ๋ฌธ์ œ

FOOD_FACTORY ํ…Œ์ด๋ธ”์—์„œ ๊ฐ•์›๋„์— ์œ„์น˜ํ•œ ์‹ํ’ˆ๊ณต์žฅ์˜ ๊ณต์žฅ ID, ๊ณต์žฅ ์ด๋ฆ„, ์ฃผ์†Œ๋ฅผ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋•Œ ๊ฒฐ๊ณผ๋Š” ๊ณต์žฅ ID๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”.

 

๐Ÿ’ป ์ฝ”๋“œ ๋ฐ ํ’€์ด

1๏ธโƒฃ like ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด '๊ฐ•์›๋„'๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ์ดํ„ฐ ์ถ”์ถœ ์ฟผ๋ฆฌ

like() ํ•จ์ˆ˜๋Š” 'ํŠน์ • ๋ฌธ์ž๋ฅผ ๊ฒ€์ƒ‰'ํ•˜๋Š” ํ•จ์ˆ˜๋กœ, ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋ฌธ์ž์—ด์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง„ ๊ฐ’์— ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•œ๋‹ค. ํ•˜๋‹จ ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋ฉด '๊ฐ•์›๋„%'๋ผ๋ฉฐ ' %'๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ %๋Š” '๊ฐ•์›๋„'๋ผ๋Š” ํ…์ŠคํŠธ ๋’ค์— ๋‹ค๋ฅธ ํ…์ŠคํŠธ๊ฐ€ ์˜ฌ ์ˆ˜ ์žˆ์Œ์„ ๋งํ•˜๋Š” ๊ฒƒ์œผ๋กœ, ๊ฐ•์›๋„๋ฅผ ์‹œ์ž‘์œผ๋กœ ํ•˜๋Š” ํ…์ŠคํŠธ๊ฐ€ ์žˆ๋Š”์ง€๋ฅผ ๊ฒ€์ƒ‰ํ•œ๋‹ค๊ณ  ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋‹ค.

select FACTORY_ID, FACTORY_NAME, ADDRESS
from food_factory
where address like '๊ฐ•์›๋„%'
order by factory_id

 

2๏ธโƒฃ instr ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•˜์—ฌ '๊ฐ•์›๋„' ๋‹จ์–ด ์œ„์น˜ ๋ฐ˜ํ™˜ ๊ฐ’์„ ์ด์šฉํ•œ ์ฟผ๋ฆฌ

instr() ํ•จ์ˆ˜ ์—ญ์‹œ 'ํŠน์ • ๋ฌธ์ž๋ฅผ ๊ฒ€์ƒ‰'ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. ๋‹ค๋งŒ ๋’ค์— > 0 ์ด๋ผ๋Š” ์กฐ๊ฑด์ด ๋ถ™์–ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋Š” instr()์˜ ๋ฆฌํ„ด ๊ฐ’ ๋•Œ๋ฌธ์ด๋‹ค. 

 

instr()์€ ์ฐพ๊ณ ์ž ํ•˜๋Š” ๋ฌธ์ž์—ด์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด ์•ˆ์— ์žˆ์„ ๊ฒฝ์šฐ ๊ทธ ์œ„์น˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋งŒ์•ฝ ์—†๋‹ค๋ฉด 0์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— '๊ฐ•์›๋„'๋ผ๋Š” ๊ธ€์ž๊ฐ€ address ์ปฌ๋Ÿผ ๋‚ด ์กด์žฌํ•  ๊ฒฝ์šฐ ๊ทธ ์œ„์น˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค๋Š” ์˜๋ฏธ์—์„œ > 0์ด๋ผ๋Š” ์กฐ๊ฑด์„ ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค.

select FACTORY_ID, FACTORY_NAME, ADDRESS
from food_factory
where instr(ADDRESS, '๊ฐ•์›๋„') > 0 
-- address ์ปฌ๋Ÿผ ๋‚ด '๊ฐ•์›๋„'๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ์ดํ„ฐ ์œ„์น˜ ๋ฐ˜ํ™˜. ์ฆ‰, 0๋ณด๋‹ค ํฐ ๊ฐ’ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋ฐ์ดํ„ฐ ์กด์žฌ O
order by factory_id

 

728x90
๋ฐ˜์‘ํ˜•