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

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

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

๐Ÿ›ข DB/MySQL
    ๋ฐ˜์‘ํ˜•

    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์™€ ๊ฐ™์€ ์กฐ๊ฑด๋ฌธ์„ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‚˜ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

     

     

    ๋ฐ˜์‘ํ˜•