Database/SQL

[NULL 처리]Incorrect decimal value: '' for column 1 java 에러 수정 방법

리커니 2021. 4. 12.
반응형

[NULL 처리]Incorrect decimal value: '' for column 1 java 에러 수정 방법

 

이번 포스팅에서는 MARIADB, MYSQL 에서 발생하는 Incorrect decimal value 에러에 대해서 

수정하는 방법을 알아보도록 하겠습니다. 

 

해당 에러는 DB에서 컬럼 타입이 numeric 으로 설정했을 때 빈값 이나 null을 전송하면 발생하는 에러입니다. 

숫자형인데 공백을 넣을 수 없다. 어찌보면 당연한 얘기지요.

 

그럼 numeric 타입으로 설정한 컬럼에 null 을 넣기 위해서는 어떻게 해야 할까요?

바로 NULLIF 함수를 사용하면 됩니다. 

 

 

자주 사용하는 IFNULL 함수와는 약간 차이가 있습니다.

 

IFNULL(컬럼, 치환할 값)

IFNULL 함수는 컬럼값이 NULL일 경우 치환할 값으로 넣겠다 이지만

 

NULLIF는 파라메터1과 파라메터2가 같으면 NULL을, 다를경우 파라메터1을 반환합니다. 

 

NULLIF(파라메터1, 파라메터2)

 

MYBATIS를 사용하면 다이나믹 쿼리를 사용하여 할 수도 있지만, NULLIF를 사용하면 쉽게 NULL처리를 할 수 있죠.

 

UPDATE TABLE
   SET COLUMN1 = NULLIF(#{param1}, '')
 WHERE KEY = #{key}

 

이렇게 하게되면 #{param1} 이 '' 나 null 이 넘어올 경우 null로 update 하게 됩니다. 

 

반응형

댓글

💲 추천 글