CVC를 NUMBER로 지정하고, 값을 000으로 줬더니
SELECT 하니까 0으로 나온다.
000인데 0으로 나오는 줄 알았더니 그게 아니었다.
심지어 SELECT * FROM CARD_CONTRACT_TEST01 WHERE CVC = 0; 해도 조회가 된다.
이제서야 이렇게 되는걸 알았네.
숫자연산이 필요한게 아니라면 절대 NUMBER 타입으로 만들지 말자!!
CREATE TABLE CARD_CONTRACT_TEST01(
CARD_NUM CHAR(16) PRIMARY KEY,
CARD_PRODUCT_CODE VARCHAR2(3) NOT NULL,
RESI_NUM CHAR(13) NOT NULL,
CVC NUMBER(3) NOT NULL,
PASSWORD NUMBER(4) NOT NULL -- 제약조건 추가안함
);
--ALTER TABLE CARD_CONTRACT_TEST01 MODIFY(CARD_NUM NUMBER(16));
--ALTER TABLE CARD_CONTRACT_TEST01 MODIFY(CARD_PRODUCT_CODE VARCHAR2(3));
INSERT INTO CARD_CONTRACT_TEST01 VALUES('9770810030728333', '1', '9203101937988', '000', '0000'); -- 카드번호, 카드상품코드(FK), 주민등록번호(FK)
SELECT * FROM CARD_CONTRACT_TEST01 WHERE CVC = 0;
COMMIT;
-- 잘못 안 정보다. CHAR 타입으로 바꿔도 똑같이 조회가 된다.
-- WHERE = 0 하면 CHAR라도 조회가 되고,
-- WHERE = '0' 으로 하면 조회가 안된다.
'데이터베이스 > ORACLE' 카테고리의 다른 글
[Oracle] 20-05-06 수업 (0) | 2020.09.04 |
---|---|
[Oacle] 최종 프로젝트 쿼리 정리 (0) | 2020.09.04 |
[Oracle] 비교절에 현재시간 + 문자열 넣기 (0) | 2020.08.31 |
[Oracle] 조회된 ROW가 없을 때, RETURN 하는 방법 (0) | 2020.08.31 |
[Oracle] date 형식의 컬럼에 데이터 넣기 (0) | 2020.08.30 |