-
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