API 테스트 중 DB INSERT 시 다음 이슈 발생
COUNTRY_CODE VARCHAR2(5) DEFAULT ‘82‘
컬럼에 빈 문자열(’’
)이 저장됨Oracle에서 DEFAULT
는 컬럼을 생략했을 때만 적용됨
INSERT INTO BTALK_MSG (..., COUNTRY_CODE, ...) VALUES (..., #{countryCode}, ...)
#{countryCode}
자리에 빈 문자열 값이 전달되면, Oracle은 이를 NULL
로 간주하지 않고 실제 값으로 처리함SQL 레벨에서 NVL(NULLIF(…))
적용
INSERT INTO BTALK_MSG (..., COUNTRY_CODE, ...)
VALUES (..., NVL(NULLIF(#{countryCode}, ''), '82'));
NULLIF(#{countryCode}, ‘’)
→ 빈 문자열이면 NULL 반환NVL(..., ‘82’)
→ NULL 이면 82
대입’’
(빈 문자열)도 유효한 값이며, DEFAULT
가 적용되지 않는다.DEFAULT
는 컬럼 생략 시에만 동작한다.