반응형

어느 날 갑자기 운영시스템(운영DB - Oracle)에서 잘 돌아가는 쿼리가 동일한 환경의 개발시스템(개발DB)에서 돌아가지 않는 현상이 발견되었다.
쿼리를 요약하자면 아래와 같은 단순한 조회 쿼리고 ID 컬럼의 데이터형은 VARCHAR2 였다.
<오류 발생>
SELECT *
FROM A
WHERE ID = 1234
일단 문자형 칼럼을 숫자로 조회한다는 건 잘못된 것이 분명하다.
하지만 그동안 시스템에서 잘 돌아가던 쿼리가 갑자기 안 돌아가는 현상은 무엇 때문일까?
그 이유는 묵시적(암시적) 형변환 때문이다.
문자열 칼럼을 숫자로 조회하면 해당 칼럼의 데이터들을 숫자로 묵시적 형 변환 후 비교하게 된다.
ID 칼럼에는 그동안 모두 숫자로 변환 가능한 데이터만을 취급했는데 갑자기 문자 데이터가 들어오게 된 것이다.
그 순간부터 해당 쿼리는 동작하지 않고 "ORA-01722: 수치가 부적합합니다" 라는 오류 메시지를 리턴하게 된다.
데이터 이슈로 문자를 숫자로 형 변환 실패되어 오류가 발생한 케이스다.
반드시 문자는 문자로 숫자는 숫자로 조회하는 것이 성능과 오류 예방 측면에서 옳은 일임을 기억하다.
<조치>
SELECT *
FROM A
WHERE ID = '1234'
반응형
'IT 이야기' 카테고리의 다른 글
| Web URL 리다이렉트 (Redirect) 2가지 구현 방법 [meta / Javascript] (0) | 2021.12.29 |
|---|---|
| jQuery 테이블 머지(셀병합) 정확하게 하는 방법 완벽정리 (0) | 2021.12.28 |
| 앱 개발 방식 알아보기 : 네이티브 / 하이브리드 / 크로스플랫폼 (0) | 2021.10.27 |
| 안드로이드 신규 앱 출시 검토 기간은 얼마나 걸릴까? (0) | 2021.10.18 |
| 웹 브라우저에서 SSL 인증서 만료일 확인하는 방법 (0) | 2021.10.15 |