Develop
[Oracle] 검색기능 구현시 like 와 % 사용하기 + CDATA 본문
검색 기능 구현시 like사용방법
기본 사용법
A.SEARCH_KEYWORD like '%'||#{searchKeyword}||'%'
실제 코드
<sql id="searchEducation">
<if test="@org.apache.commons.lang3.StringUtils@isNotBlank(searchSDate)">
<choose>
<when test="searchCalCondition eq 1">
<![CDATA[ AND A.EDU_END_YMD >= TO_DATE(#{searchSDate}, 'yyyy-MM-dd') ]]>
</when>
<when test="searchCalCondition eq 2">
<![CDATA[ AND A.RCPT_BGNG_YMD >= TO_DATE(#{searchSDate}, 'yyyy-MM-dd') ]]>
</when>
<when test="searchCalCondition eq 3">
<![CDATA[ AND A.RCPT_END_YMD >= TO_DATE(#{searchSDate}, 'yyyy-MM-dd') ]]>
</when>
<otherwise>
<![CDATA[ AND A.EDU_BGNG_YMD >= TO_DATE(#{searchSDate}, 'yyyy-MM-dd') ]]>
</otherwise>
</choose>
</if>
<if test="@org.apache.commons.lang3.StringUtils@isNotBlank(searchEDate)">
<choose>
<when test="searchCalCondition eq 1">
<![CDATA[ AND A.EDU_END_YMD <= TO_DATE(#{searchEDate}, 'yyyy-MM-dd') ]]>
</when>
<when test="searchCalCondition eq 2">
<![CDATA[ AND A.RCPT_BGNG_YMD <= TO_DATE(#{searchEDate}, 'yyyy-MM-dd') ]]>
</when>
<when test="searchCalCondition eq 3">
<![CDATA[ AND A.RCPT_END_YMD <= TO_DATE(#{searchEDate}, 'yyyy-MM-dd') ]]>
</when>
<otherwise>
<![CDATA[ AND A.EDU_BGNG_YMD <= TO_DATE(#{searchEDate}, 'yyyy-MM-dd') ]]>
</otherwise>
</choose>
</if>
<if test='searchKeyword != null and searchKeyword !=""'>
<choose>
<when test="searchCondition eq 1">
AND A.EDU_CRS_NM like '%'||#{searchKeyword}||'%'
</when>
<when test="searchCondition eq 2">
AND
( A.EDU_TRGT like '%'||#{searchKeyword}||'%'
OR A.EDU_PRPS like '%'||#{searchKeyword}||'%'
OR A.EDU_CN like '%'||#{searchKeyword}||'%'
)
</when>
<otherwise>
AND
( A.EDU_CRS_NM like '%'||#{searchKeyword}||'%'
OR A.EDU_TRGT like '%'||#{searchKeyword}||'%'
OR A.EDU_PRPS like '%'||upper(#{searchKeyword})||'%'
OR A.EDU_CN like '%'||#{searchKeyword}||'%'
)
</otherwise>
</choose>
</if>
</sql>
CDATA (Character DATA)
: 문자형 데이터
: [ ]안에 문자열을 입력하면 그 문자열은 파싱되지 않고 문자열로 출력된다
( ex. select문에는 조건을 걸기위해 <,>,= 등의 기호를 많이 사용하는데 이것이 파싱 중에 태그로 인식되는 등의 문제를 방지하기 위해 사용한다.)
CDATA 사용법
시작
<![CDATA[
끝
]]>
시작과 끝 사이에 내용이 들어간다
참고한 글
마이바티스에서 <![CDATA[]]> 를 사용하는 이유 :: 호기심 많은 오리의 지식 저장소 (tistory.com)
마이바티스에서 <![CDATA[]]> 를 사용하는 이유
CDATA = Character DATA, 즉 문자형 데이터를 말함. 이렇게 선언하고 안에 문자열을 채워 넣으면 , [ ] 안에 있는 문장은 파싱되지 않고 그대로 문자열로 출력된다. 마이바티스에서 매퍼 파일은 XML으로
gdtbgl93.tistory.com
'DB > Oracle' 카테고리의 다른 글
[Oracle] 날짜 타입 Date : TO_CHAR / TO_DATE / SYSDATE (0) | 2024.03.18 |
---|