여러 가지 숫자 형태에 공백을 넣으면 어떤 일이 벌어질까요?

한 번 알아보도록 하죠~

1. 먼저 테이블을 생성합니다.

CREATE TABLE TB_NumberTest

(

SEQ INT IDENTITY(1,1) NOT NULL,

DATATYPE VARCHAR(200) NOT NULL,

ColBigInt BIGINT,

ColBit BIT,

ColDecimal DECIMAL(5,2),

ColInt INT,

ColMoney MONEY,

ColNumeric NUMERIC(5,2),

ColSmallInt SMALLINT,

ColSmallMoney SMALLMONEY,

ColTinyInt TINYINT,

ColFloat FLOAT,

ColReal REAL

)

GO

2. 하나씩 INSERT 합니다. 간혹 오류가 나는 것도 있네요.

INSERT INTO TB_NumberTest (DATATYPE, ColBigInt) VALUES ('ColBigInt', '');

(1 row(s) affected)

INSERT INTO TB_NumberTest (DATATYPE, ColBit) VALUES ('ColBit', '');

(1 row(s) affected)

INSERT INTO TB_NumberTest (DATATYPE, ColDecimal) VALUES ('ColDecimal', '');

Msg 8114, Level 16, State 5, Line 1

Error converting data type varchar to numeric.

INSERT INTO TB_NumberTest (DATATYPE, ColInt) VALUES ('ColInt', '');

(1 row(s) affected)

INSERT INTO TB_NumberTest (DATATYPE, ColMoney) VALUES ('ColMoney', '');

(1 row(s) affected)

INSERT INTO TB_NumberTest (DATATYPE, ColNumeric) VALUES ('ColNumeric', '');

Msg 8114, Level 16, State 5, Line 1

Error converting data type varchar to numeric.

INSERT INTO TB_NumberTest (DATATYPE, ColSmallInt) VALUES ('ColSmallInt', '');

(1 row(s) affected)

INSERT INTO TB_NumberTest (DATATYPE, ColSmallMoney) VALUES ('ColSmallMoney', '');

(1 row(s) affected)

INSERT INTO TB_NumberTest (DATATYPE, ColTinyInt) VALUES ('ColTinyInt', '');

(1 row(s) affected)

INSERT INTO TB_NumberTest (DATATYPE, ColFloat) VALUES ('ColFloat', '');

(1 row(s) affected)

INSERT INTO TB_NumberTest (DATATYPE, ColReal) VALUES ('ColReal', '');

(1 row(s) affected)

3. 이제 결과를 보겠습니다.

SELECT * FROM TB_NumberTest;

numbertype.jpg

l 보시는 바와 같이 Numeric Type Decimal Type을 제외하고는 에러가 나지 않고 다 0으로 들어갑니다.

작업할 때 혼돈이 없도록 해야겠죠?

참고로… MSSQL에서 DECIMAL NUMERIC은 같은 타입입니다.

또, 참고로 Oracle에서는 숫자타입에 '' 을 넣으면 NULL로 처리됩니다.

+ Recent posts