본문 바로가기

프로그래밍/Database

Oracle_WHERE 1=1

반응형

WHERE 1=1

동적 쿼리에서 특정상황마다 WHERE절을 다르게 작성해줘야 할 때 편리하다. 

 

동적 쿼리에서 if문을 사용하여 조건을 특정상황마다 바꾸고 싶을 때 WHERE 1=1 선언 후 AND 조건을 적어주면 된다.

단, 일반 쿼리문 작성시 WHERE 조건의 1=1은 무의미하다.

 

 

 

번호, 이름, 시작일, 마지막일 조회하는 기능

<sql id="list-where">
	<if test="prNo != null and prNo != ''">
		AND PM.PR_NO like '%' || upper(#{prNo}) || '%'
	</if>
	<if test="prCmpyCd != null and prCmpyCd != ''">
		AND PM.PR_CMPY_CD like '%' || #{prCmpyCd} || '%'
	</if>
	<if test="prStartDt != null and prStartDt != ''">
		<![CDATA[AND PM.PR_START_DT >= #{prStartDt}]]>
	</if>
	<if test="prEndDt != null and prEndDt != ''">
		<![CDATA[AND PM.PR_END_DT <= #{prEndDt}]]>
	</if>
</sql>

 

 

<select id="selectListPdMnm" parameterType="com.abc.def.domain.PdMnmVO" resultType="com.abc.def.domain.PdMnmVO">
	<include refid="com.abc.def.mapper.CommonMapper.sqlPagingHeader"/>
	    SELECT PM.PR_NO AS prNo
		   , PM.PR_CMPY_CD AS prCmpyCd
                   , CD.DESC_KOR AS prCmpyNm
		   , TO_CHAR(PM.PR_START_DT, 'yyyy-mm-dd') AS prStartDt
		   , TO_CHAR(PM.PR_END_DT, 'yyyy-mm-dd') AS prEndDt
		   , PM.PR_TITLE AS prTitle
		   , TO_CHAR(PM.UPDT_DT, 'yyyy-mm-dd') AS updtDt
		   , PM.UPDT_EMPNO AS updtEmpno
		   , TO_CHAR(PM.CRTN_DT, 'yyyy-mm-dd') AS crtnDt
		   , PM.CRTR_EMPNO AS crtrEmpno
		   , PM.PR_DESCRIPTION AS prDescription
	    FROM PR_MNM PM
            LEFT OUTER JOIN CODE_DTL CD
            ON PM.PR_CMPY_CD = CD.CD_DATA
            AND CD.CD_TYPE = 'PO'
            WHERE 1=1
        <include refid="list-where"/>
	<include refid="com.abc.def.mapper.CommonMapper.sqlPagingFooter"/>
</select>
반응형

'프로그래밍 > Database' 카테고리의 다른 글

Oracle_MERGE INTO 문  (0) 2023.09.06
MySQL_JAVA DB 연결 (select, delete)  (0) 2023.03.14
MySQL_GROUP BY절  (0) 2023.03.10
MySQL_N : M 관계  (0) 2023.03.10
MySQL_MySQL FUNCTION  (0) 2023.03.10