๐จ๐ป MySQL์์ GROUP_CONCAT๊ณผ FIND_IN_SET ํ์ฉํ๊ธฐ
๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด ํ๋์ ์ปฌ๋ผ์ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ์ ์ฅํ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธด๋ค.
์๋ฅผ ๋ค์ด, ์ค๋ฌด์์ ๋
ผ๋ฌธ์ ํ์ด์ง ์ ๋ณด๋ฅผ ํ ์ปฌ๋ผ์ ํ์ดํ(|)๋ก ๊ตฌ๋ถํ ๋ฌธ์์ด๋ก ์ ์ฅํด์ผ` ํ์๋ค.
์ด๋ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์๋ SQL ํจ์๊ฐ GROUP_CONCAT()๊ณผ FIND_IN_SET()์ด๋ค.
1๏ธโฃ GROUP_CONCAT() ํจ์
GROUP_CONCAT()์ ์ฌ๋ฌ ํ์ ๊ฐ์ ํ๋์ ๋ฌธ์์ด๋ก ํฉ์น๋ ํจ์์ด๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ ํ์ ๊ฐ์ ์ฝค๋ง(,)๋ก ์ฐ๊ฒฐํด์ ํ๋์ ๋ฌธ์์ด๋ก ๋ง๋ ๋ค.
SELECT GROUP_CONCAT(column_name ORDER BY column_name SEPARATOR ', ') FROM table_name;
- ORDER BY column_name: ์ ๋ ฌ ๊ธฐ์ค์ ์ง์ ํ ์ ์๋ค.
- SEPARATOR ', ' : ๊ธฐ๋ณธ ๊ตฌ๋ถ์๋ ,์ด์ง๋ง, |, -, : ๋ฑ์ผ๋ก ๋ณ๊ฒฝํ ์ ์๋ค.
2๏ธโฃ FIND_IN_SET() ํจ์
FIND_IN_SET()์ ์ฝค๋ง(,)๋ก ๊ตฌ๋ถ๋ ๋ฌธ์์ด์์ ํน์ ๊ฐ์ ์ฐพ์ ๋ ์ฌ์ฉํ๋ ํจ์์ด๋ค.
SELECT FIND_IN_SET('๊ฒ์ํ ๊ฐ', '๊ฐ1,๊ฐ2,๊ฐ3');
โพ ๋ฐํ ๊ฐ
- ๊ฐ1,๊ฐ2,๊ฐ3 ์ค '๊ฒ์ํ ๊ฐ'์ด ๋ช ๋ฒ์งธ ์์น์ ์๋์ง ์ซ์๋ก ๋ฐํํ๋ค.
- ๊ฐ์ด ์์ผ๋ฉด 0์ ๋ฐํํ๋ค.
๐ ์์
SELECT FIND_IN_SET('B', 'A,B,C,D');
-- ๊ฒฐ๊ณผ: 2 (B๋ ๋ ๋ฒ์งธ ์์น)
SELECT FIND_IN_SET('E', 'A,B,C,D');
-- ๊ฒฐ๊ณผ: 0 (E๋ ์์)SELECT FIND_IN_SET('E', 'A,B,C,D');
3๏ธโฃ ์ค๋ฌด ์์
๋๋ GROUP_CONCAT()์ ์ฌ์ฉํ์ผ๋, FIND_IN_SET() ํจ์๋ ์ฝค๋ง(,)๋ก ๊ตฌ๋ถ๋ ๋ฌธ์์ด๋ง ์ธ์ํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ ์ ์์๊ณ , split() ํจ์๋ฅผ ์ฌ์ฉํด ํ์ฑํ๋ค.
๐ ์์
String pageInfo = "123-130|145-150|200-210";
// ํ์ดํ(|) ๊ธฐ์ค์ผ๋ก split
String[] pages = pageInfo.split("\\|");
for (String page : pages) {
System.out.println("ํ์ด์ง ๋ฒ์: " + page);
}
4๏ธโฃ GROUP_CONCAT + FIND_IN_SET ์ธ์ ์ฌ์ฉํ๋ฉด ์ข์๊น?
โ ํ๋์ ์ปฌ๋ผ์ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ์ ์ฅํด์ผ ํ ๋
- ์: ํ ์ฌ์ฉ์๊ฐ ์ฌ๋ฌ ๊ฐ์ ๊ด์ฌ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ์ ํํ๋ ๊ฒฝ์ฐ.
โ ์ฝค๋ง๋ก ๊ตฌ๋ถ๋ ๊ฐ์์ ํน์ ํญ๋ชฉ์ ์ฐพ์ ๋
- ์: A,B,C,D์ ๊ฐ์ ๋ฐ์ดํฐ์์ ํน์ ๊ฐ์ด ํฌํจ๋์๋์ง ๊ฒ์.
โ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ํ๋์ ๋ฌธ์์ด๋ก ๋ฌถ์ด์ ์ถ๋ ฅํ๊ณ ์ถ์ ๋
- ์: GROUP_CONCAT()์ ์ฌ์ฉํด Music, Sports์ฒ๋ผ ๋ฐ์ดํฐ๋ฅผ ํ๋๋ก ํฉ์น ๋.
'Database > MySQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[MySQL]์๋ธ์ฟผ๋ฆฌ๋ณด๋ค ๊ฐ๋ ์ฑ ์ข์ WITH ๊ตฌ๋ฌธ (0) | 2025.05.22 |
---|---|
[MySQL]์ค๋ณต ์ ๊ฑฐ ์ ์ฌ์ฉํ๋ DISTINCT (0) | 2025.04.03 |
[MySQL]DATE_FORMAT ํจ์ (0) | 2024.08.30 |
[MySQL] IFNULL ํจ์ (Oracle์ NVL๊ณผ ๊ฐ์ ์ญํ ) (0) | 2024.06.04 |