๊ด€๋ฆฌ ๋ฉ”๋‰ด

bom's happy life

[MYSQL] CONCAT, CONCAT_WS ํ•จ์ˆ˜, ์‚ฌ์šฉ๋ฒ• ๋ณธ๋ฌธ

Deveolpment Study๐Ÿ—‚๏ธ/Databases

[MYSQL] CONCAT, CONCAT_WS ํ•จ์ˆ˜, ์‚ฌ์šฉ๋ฒ•

bompeach 2023. 9. 22. 14:54
๋ฌธ์ž์—ด ๋ถ™์ด๋Š” ๋ฐฉ๋ฒ•

 

1. CONCAT

MYSQL์—์„œ CONCAT ํ•จ์ˆ˜๋Š” ๋‘ ๊ฐœ ์ด์ƒ์˜ ๋ฌธ์ž์—ด ์ธ์ž ๊ฐ’์ด๋‚˜, ์ปฌ๋Ÿผ๊ฐ’์„ ์ˆœ์„œ๋Œ€๋กœ ํ•ฉ์นœ ํ›„ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜์ด๋‹ค.

 

์˜ˆ์‹œ 
SELECT CONCAT('MY','SQL') FROM DUAL;
SELECT CONCAT('M','Y','S','Q','L') FROM DUAL;
SELECT CONCAT('HELLO','11111','WORLD') FROM DUAL;
SELECT CONCAT('HELLO',NULL,'11111','WORLD') FROM DUALL;

 

๊ฒฐ๊ณผ
MYSQL
MYSQL
HELLO11111WORLD
NULL

 

2. CONCAT_WS

MYSQL์—์„œ CONCAT_WS ํ•จ์ˆ˜๋Š” ๋‘๊ฐœ ์ด์ƒ์˜ ๋ฌธ์ž์—ด ์ธ์ž ๊ฐ’์ด๋‚˜, ์ปฌ๋Ÿผ๊ฐ’์„ ๋ฐ˜๋ณต๋˜๋Š” ๊ตฌ๋ถ„์ž๋ฅผ ๋„ฃ๊ณ  ์ˆœ์„œ๋Œ€๋กœ ํ•ฉ์นœ ํ›„ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜์ด๋‹ค.

 

์˜ˆ์‹œ
SELECT CONCAT_WS(',' , 'M' , 'Y' , 'S', 'Q', 'L') FROM DUAL;
SELECT CONCAT_WS('|' , 'M' , 'Y' , 'S', 'Q', 'L') FROM DUAL;
SELECT CONCAT_WS(',' , 'MYSQL' , '123') FROM DUAL;
SELECT CONCAT_WS(',' , 'MYSQL' , NULL , '123') FROM DUAL;

 

๊ฒฐ๊ณผ
M,Y,S,Q,L
M|Y|S|Q|L
MYSQL,123
MYSQL,123

 

์˜ˆ์ œ : LIKE์™€ CONCAT_WS 

<choose>
	<when test="searchCondition == 'placeRentTermSeq'">
		AND placeRentTermSeq LIKE CONCAT_WS(#{searchKeyword}, '%', '%')
	</when>
	<when test="searchCondition == 'rentDate'">
		AND rentDate LIKE CONCAT_WS(#{searchKeyword}, '%', '%')
	</when>
 	<when test="searchCondition == 'ALL'">
		AND	(placeRentTermSeq LIKE CONCAT_WS(#{searchKeyword}, '%', '%'))
		OR (rentDate LIKE CONCAT_WS(#{searchKeyword}, '%', '%'))
	</when>
</choose>

 

์ฝ”๋“œ ์„ค๋ช… :

์œ„์˜ ์ฝ”๋“œ๋Š” XML ํ˜•์‹์˜ ์ฟผ๋ฆฌ ์กฐ๊ฑด์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ์ฃผ์–ด์ง„ ๊ฒ€์ƒ‰ ์กฐ๊ฑด์— ๋”ฐ๋ผ SQL ์งˆ์˜๋ฌธ์˜ ์ผ๋ถ€๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉ๋œ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์€ "LIKE CONCAT_WS(#{searchKeyword}, '%', '%')"

 

1. LIKE : SQL ์ฟผ๋ฆฌ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์—ฐ์‚ฐ์ž. ๋ฌธ์ž์—ด์ด๋‚˜ ํ…์ŠคํŠธ ๊ฐ’์— ๋Œ€ํ•œ ๋ถ€๋ถ„์ ์ธ ์ผ์น˜๋ฅผ ์ฐพ๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ %์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋ฉฐ, %๋Š” ์ž„์˜์˜ ๋ฌธ์ž์—ด์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

2. CONCAT_WS( ) : ์ด ํ•จ์ˆ˜๋Š” ๋ฌธ์ž์—ด์„ ์—ฐ๊ฒฐํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. CONCAT_WS() ํ•จ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉ๋œ๋‹ค.

  • ์ฒซ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜: ๊ตฌ๋ถ„์ž (delimiter)๋กœ ์‚ฌ์šฉํ•  ๋ฌธ์ž์—ด.
  • ๋‚˜๋จธ์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜: ์—ฐ๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์ž์—ด.

์ด ํ•จ์ˆ˜๋Š” ๊ตฌ๋ถ„์ž์™€ ๋ฌธ์ž์—ด์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด๋กœ ์—ฐ๊ฒฐํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, CONCAT_WS('-', '2023', '09', '22')๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด "2023-09-22"๋ผ๋Š” ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

  • ์ฝ”๋“œ์—์„œ #{searchKeyword}๋Š” ๋ณ€์ˆ˜ ๋˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ด ๋ณ€์ˆ˜๋Š” ๊ฒ€์ƒ‰ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค.
  • CONCAT_WS(#{searchKeyword}, '%', '%')๋Š” ๊ฒ€์ƒ‰ ํ‚ค์›Œ๋“œ์™€ %๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด์„ ์—ฐ๊ฒฐํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฒ€์ƒ‰ ํ‚ค์›Œ๋“œ๊ฐ€ ์–‘์ชฝ์— %๋กœ ๋‘˜๋Ÿฌ์‹ธ์ธ ๋ฌธ์ž์—ด์ด ๋ฉ๋‹ˆ๋‹ค. %๋Š” ์™€์ผ๋“œ์นด๋“œ ๋ฌธ์ž๋กœ, ์ž„์˜์˜ ๋ฌธ์ž์—ด์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ด ๋ฌธ์ž์—ด์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ถ€๋ถ„์ ์ธ ์ผ์น˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฒ€์ƒ‰ ํ‚ค์›Œ๋“œ๊ฐ€ "apple"์ด๋ผ๋ฉด, CONCAT_WS(#{searchKeyword}, '%', '%')๋Š” "%apple%"์ด ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด "apple"์ด ํฌํ•จ๋œ ๋ชจ๋“  ๋ฌธ์ž์—ด์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ฝ”๋“œ์˜ ๋ชฉ์ ์€ ๊ฒ€์ƒ‰ ์กฐ๊ฑด์— ๋”ฐ๋ผ placeRentTermSeq ๋˜๋Š” rentDate ์—ด์—์„œ ๋ถ€๋ถ„์ ์ธ ์ผ์น˜๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ์ ์ ˆํ•œ ๊ฒ€์ƒ‰ ํ‚ค์›Œ๋“œ์™€ %๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ SQL ์งˆ์˜๋ฌธ์˜ ์ผ๋ถ€๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด๋‹ค.