[SQL_ERROR] COALESCE types character varying and integer cannot be matched

Jin Seowoo·2021년 8월 11일
0

error

목록 보기
1/1
update t_user
		   set user_nm = COALESCE(#{user_nm}, user_nm)      // column parameter type : varchar
		     , task_id = COALESCE(#{task_id}, task_id)      // column parameter type : int
		 where user_id = #{user_id}

result : coalesce error // parameter type이 맞지 않는 오류,
task_id 는 int이지만 값이 없을 경우 #{task_id}는 ''로 찍히기 때문에 ''를 값으로 인정하고 넣으려고 하기 떄문에 parameter type error가 발생한다.

solution

update t_user
		   set user_nm = COALESCE(#{user_nm}, user_nm)
				<if test="task_id != null and task_id != '' ">
		     , task_id = #{task_id}
				</if>
		 where user_id = #{user_id}

null이나 ''값이 들어왔을 경우 실행하지 않는 조건을 걸어준다.

0개의 댓글