본문 바로가기

개발중/MYSQL

MYSQL 쿼리 활용 FIND_IN_SET

728x90
반응형

 

쿼리를 쓰다 하나의 속성 값에 여러 코드의 값이 ',' 로 묶여 하나의 문자열로 저장되어 있었는데,

현재 ',' 로 엮인 코드들을 OR 값으로 검색해야 하는 일이 생겼다.

 

LIKE 절로 하자니 ,,,,, 뭔가 지저분해서 찾은 방법이 FIND_IN_SET 이다!

 

FIND_IN_SET 는 두 개의 인자를 받는다.

FIND_IN_SET( 찾고자 하는 문자열, 타겟 컬럼 )

 

아래와 같이 쿼리를 작성하면 즉, CODE 컬럼에 'SB' 라는 문자열이 존재한다면 'SB' 의 인덱스를 반환한다 !

따라서 0 이상이면 내가 찾고자하는 코드가 있다는거다 !

 


 

쿼리 활용

 

SELECT *
  FROM SBTABLE
 WHERE FIND_IN_SET( 'SB', CODE ) > 0

 

 

MYBATIS 활용

 

<foreach item="item" index="index" collection="sourceTypeList">
   <if test="!item.equals('') and item != null and index == 0">
        WHERE FIND_IN_SET(#{item}, CODE ) > 0
    </if>
    <if test="!item.equals('') and item != null and index > 0">
        OR FIND_IN_SET(#{item}, CODE) > 0
    </if>
</foreach>

 


 

 

728x90
반응형