trim 사용하는 방법
<update id="updateExam" parameterType="VO">
UPDATE examTable
<trim prefix="SET" suffixOverrides=",">
<if test="exam1 != null">exam1 = #{exam1},</if>
<if test="exam2 != null">exam2 = #{exam2},</if>
</trim>
WHERE
idx = #{idx}
</update>
mybatis에서 update 쿼리문을 사용하다보면 위처럼 조건문만 사용하게 되는 경우가 생긴다. 그때 콤마(,) 를 어떻게 사용해야 sql문 error가 발생하지 않을지 고민하게 된다. 그럴때는 위 예제처럼 trim 이라는것을 사용하자.
+댓글내용 참고 (gyeongtae kim님)
- prifix = tirm 안에있는 모든 문자열의 앞에 붙여줄 문자열을 입력하는 곳
- suffixOverrides = trim 안에있는 모든 문자열의 조건문을 판별해서 입력된 문자열의 맨 끝에서부터 찾아서 지워줄 문자열을 입력하는 곳
Oracle 에서 NVL 함수 사용하는 방법
오라클에서 NVL 함수를 사용해서 처리해보자.
<update id="updateExam" parameterType="VO">
UPDATE examTable
exam1 = NVL(#{exam1}, exam1)
exam2 = NVL(#{exam2}, exam2)
WHERE
idx = #{idx}
</update>
NVL 함수를 사용하면 된다. NVL 함수를 사용하여 파라미터 값이 null인 경우 기존 컬럼 값으로 UPDATE 하므로 동적 쿼리가 아닌 오라클 함수를 사용하여 처리할 수 있다.
NVL 함수 포스팅 바로가기
https://devfunny.tistory.com/16
NULL인 경우 값 변환 (NVL, NULLIF, COALESCE 함수)
NULL 변환 함수 1. NVL 함수 NULL 값을 다른 값으로 변환할때 사용하며, 모든 데이터 타입에 사용할 수 있다. SELECT NVL(col1, 0) FROM exam exam 테이블의 컬럼 col1이 null이라면, 0을 출력한다. 2. NULLIF 함..
devfunny.tistory.com
MySql에서 IFNULL 함수 사용하는 방법
<update id="updateExam" parameterType="VO">
UPDATE examTable
exam1 = IFNULL(#{exam1}, exam1)
exam2 = IFNULL(#{exam2}, exam2)
WHERE
idx = #{idx}
</update>
Mysql 에서는 오라클의 NVL 함수와 동일하게 수행되는 IFNULL 함수가 있다.
IFNULL 함수 포스팅 바로가기
https://devfunny.tistory.com/193
MYSQL IFNULL 함수
IFNULL 함수 IFNULL((SELECT col1 FROM test WHERE idx = 1), '테스트 완료') IFNULL 함수(조건1, 조건2) - 조건 1의 값이 NULL 이면 조건 2를 출력 - 조건 1의 값이 NULL이 아니면 조건 1의 값을 출력
devfunny.tistory.com
'Coding > SQL Query' 카테고리의 다른 글
MYSQL IFNULL 함수 (0) | 2018.10.04 |
---|---|
case~when~then 문 사용해보기 (0) | 2018.10.04 |
mybatis 쿼리문 실행결과 컬럼(열) 순서를 고정시키기 (1) | 2018.10.04 |
Mapper의 쿼리가 실행되었을때 실행된 행의 개수를 가져오고싶으면? (0) | 2018.05.11 |
NULL인 경우 값 변환 (NVL, NULLIF, COALESCE 함수) (0) | 2018.05.11 |