๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋ชฉ๋ก์ด ์—†์Šต๋‹ˆ๋‹ค.

[MySQL] where 1=1 ์˜๋ฏธ / ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

2018. 1. 30. ๐Ÿ›ข DB/MySQL
  1. 1=1 ?
  2. *์ถ”๊ฐ€(2021.09.27)

MySQL
MySQL

 

์šด์˜์„œ๋ฒ„์— ์˜ฌ๋ผ๊ฐ€์žˆ๋Š” ์ฟผ๋ฆฌ๋ฌธ์„ ์‚ดํŽด๋ณด๋ฉด where ์กฐ๊ฑด ์ ˆ์— 1=1 ์ด ๋งŽ์ด ๋ถ™์–ด์žˆ์–ด์š”

์ฒ˜์Œ์—๋Š” ์ด๊ฒŒ ๋ญ”์ง€ ์ด๊ฑธ ์™œ ์“ฐ๋Š”์ง€ ์ดํ•ด๋ฅผ ๋ชปํ–ˆ๋Š”๋ฐ ํ•˜๋‹ค๋ณด๋‹ˆ๊นŒ ์™œ ์“ฐ๋Š”์ง€ ์•Œ๊ฒŒ ๋˜์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ด์š”.

 

1=1 ?

1=1 ์ด๋ผ๋Š”๊ฑด ํ•ญ์ƒ ์ฐธ์ด๋ผ๋Š”๊ฑธ ์˜๋ฏธํ•ด์š”. ๊ธ€๋ฉด ์™œ ์ด๋Ÿฐ ํ•ญ์ƒ ์ฐธ์ด๋ผ๋Š” ์กฐ๊ฑด์„ ์“ฐ๋ƒ ?

 

๋’ค์— ๋ถ™๋Š” ์กฐ๊ฑด๋“ค์ด ๊ณ ์ •์ ์œผ๋กœ ๋ถ™์ง€ ์•Š์„ ๋•Œ ์ฆ‰, ๋™์ ์œผ๋กœ ์กฐ๊ฑด์ ˆ์„ ๋ถ™์ด๊ณ  ์‹ถ์„ ๋•Œ ์•„์ฃผ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜์š”

 

์—๋ฅผ๋“ค๋ฉด ๊ฒ€์ƒ‰๊ธฐ๋Šฅ์ด ์žˆ์–ด์š”

 

์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์ž…๋ ฅ๋ฐ›์€ ํ‚ค์›Œ๋“œ๊ฐ€ ์กด์žฌํ•  ๋•Œ์—๋งŒ ๋’ค์— ์กฐ๊ฑด์ ˆ์„ ๋ถ™์ด๊ณ  ์‹ถ์„ ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉ๋˜์š” ( ์ œ ์ƒํ™ฉ์€ Spring Framework๊ธฐ๋ฐ˜ mybatis๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ƒํ™ฉ์ด์—์š” )

 

1
2
3
4
5
SELECT * FROM TB_TEST
WHERE 1=1
<if test="keyword != null and keyword != ''">
    <![CDATA[ AND value LIKE CONCAT ('%', #{keywork}, '%') ]]>
</if>
cs

 

์ €๋Ÿฐ์‹์œผ๋กœ AND๋ฅผ ์•ž์— ๋ถ™์—ฌ์„œ ์กฐ๊ฑด์ ˆ์„ ๋™์ ์œผ๋กœ ๋Š˜๋ฆด ๋•Œ WHERE 1=1์€ ์•„์ฃผ ์œ ์šฉํ•ด์š”.

 

*์ถ”๊ฐ€(2021.09.27)

์ด ํฌ์ŠคํŒ…์„ ์“ด ๊ฑด ๊ณต๋ถ€ ์‹œ์ž‘ํ•œ์ง€ ์–ผ๋งˆ ์•ˆ๋˜์—ˆ๋˜ ์ƒํ™ฉ ๊ทธ๋ฆฌ๊ณ  ์šด์˜ ์†Œ์Šค๋ฅผ ์ ‘ํ•œ์ง€ ์–ผ๋งˆ ์•ˆ๋˜์—ˆ์„ ๋•Œ ์ธ๋ฐ์š”. ๊ณต๋ถ€๋ฅผ ํ•˜๋‹ค๋ณด๋‹ˆ ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์žˆ์–ด์„œ ์ถ”๊ฐ€๋กœ ์ •๋ฆฌํ•ด์š”. WHERE 1=1๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์–ด์ฐŒ ๋˜์—ˆ๊ฑด ์ž‘์€ ์—ฐ์‚ฐ์ผ์ง€๋ผ๋„ DB์„œ๋ฒ„์— ์˜๋ฏธ์—†๋Š” ์—ฐ์‚ฐ์„ ์‹œํ‚ค๋Š” ๊ฒƒ์ธ๋ฐ์š”. WHERE 1=1 ์—†์–ด๋„ mybatis๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ <where> ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋˜์š”.

 

SELECT * FROM TB_TEST
<where>
  <if test="keyword != null and keyword != ''">
      <![CDATA[ AND value LIKE CONCAT ('%', #{keywork}, '%') ]]>
  </if>
</where>

์ฃผ์˜์‚ฌํ•ญ์€ <where> ํƒœ๊ทธ ์ „์— Where ๋ฌธ์ด ์กด์žฌํ•˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ด์š”. ์œ„์— ์ฒ˜๋Ÿผ ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋  ์ˆ˜๋„ ์žˆ๊ณ  ์•ˆ๋  ์ˆ˜๋„ ์žˆ๋Š” ์ฟผ๋ฆฌ๋ฅผ <where> ํƒœ๊ทธ๋กœ ๊ฐ์‹ธ์ฃผ๋ฉด ์ƒ์„ฑ์ด ๋œ๋‹ค๋ฉด ์ž๋™์œผ๋กœ WHERE ๋ฌธ์ด ์ƒ์„ฑ๋˜๊ณ  ๋งŒ์•ฝ ์ƒ์„ฑ์ด ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด WHERE๋ฌธ์ด ์ƒ์„ฑ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. WHERE 1=1 ์ฒ˜๋Ÿผ ๋ถˆํ•„์š”ํ•œ ์—ฐ์‚ฐ์ด ์—†๋Š” ๊ฒƒ์ด์ฃ . 

 

๋‹ค์Œ์€ mybatis์—์„œ if , choose์™€ ๊ฐ™์€ ์กฐ๊ฑด๋ฌธ์„ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‚˜ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.