ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MyBatis - 대소문자 구분 없이 데이터 조회하기
    Database/MyBatis 2022. 3. 24. 17:06

    대소문자 구분 없이 데이터 조회

    기존의 코드
    <when test="indexNameKeyword != '' and elementIdKeyword != ''">
        SELECT
        <include refid="dataColumns"/>
        FROM TBL_XBR_IDX_CALC
        WHERE (INDX_NM LIKE '%' || #{indexNameKeyword} || '%'
        ${searchType} TRGT_ELMT_ID LIKE '%' || #{elementIdKeyword} || '%')
        ORDER BY INDX_SEQ, CACL_ORD
    </when>

    사용자로부터 검색어를 입력받아 해당 검색어를 포함하고 있는 데이터를 출력하는 쿼리문이다.

    테스트 결과 대소문자를 구분하여 데이터를 조회한다는 문제점을 파악하고, 위 쿼리문을 대소문자 구분 없이 데이터를 조회할 수 있는 쿼리문으로 변경하기 위한 작업을 시작했다.

     

    lower, upper의 이용
    LOWER(column_name) LIKE ('%' || LOWER(#{parameter}) || '%')
    
    UPPER(column_name) LIKE ('%' || UPPER(#{parameter}) || '%')

    where 절에 like로 검색 조건을 줄 경우 대소문자를 구분하게 되는데, 위 코드처럼 lower 또는 upper를 사용하면 대소문자 구분 없이 검색이 가능하다.

     

    코드 변경
    <when test="indexNameKeyword != '' and elementIdKeyword != ''">
        SELECT
        <include refid="dataColumns"/>
        FROM TBL_XBR_IDX_CALC
        WHERE (INDX_NM LIKE '%' || #{indexNameKeyword} || '%'
        ${searchType} LOWER(TRGT_ELMT_ID) LIKE '%' || LOWER(#{elementIdKeyword}) || '%')
        ORDER BY INDX_SEQ, CACL_ORD
    </when>

    검색 조건이 되는 속성과 사용자로부터 입력받은 검색 키워드를 lower로 감싸서, 대소문자의 구분 없이 데이터를 출력할 수 있도록 쿼리문을 변경하였다.

     

    728x90

    'Database > MyBatis' 카테고리의 다른 글

    Myabtis - <sql>, <include> 태그  (0) 2022.04.28
    MyBatis - ${}와 #{}의 차이  (0) 2022.03.22
    MyBatis - <choose>, <when>, <otherwise> 태그  (0) 2022.03.21
    MyBatis - MyBatis의 <if> 태그  (0) 2022.03.21
    MyBatis - DBMS 별 LIKE 문법  (0) 2022.03.21

    댓글

Designed by Tistory.