Develop

[Oracle] 검색기능 구현시 like 와 % 사용하기 + CDATA 본문

DB/Oracle

[Oracle] 검색기능 구현시 like 와 % 사용하기 + CDATA

개발 기록 2024. 3. 15. 13:53

 

검색 기능 구현시 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