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

한 번 알아보도록 하죠~

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로 처리됩니다.

 

CHAR

고정길이의 문자 DATA를 4000 Byte 저장할 수 있다.

 Ex) CHAR(8)

ABCDE

 →

A

B

C

D

E

 

 

 

 

VARCHAR2

가변길이의 문자 DATA를 4000 Byte 저장할 수 있다.

 Ex) VARCHAR2(8)

ABCDE

 →

A

B

C

D

E

 

NUMBER

 숫자값을 -38 자리수 ~ +38 자리수를 저장할 수 있다.

 Ex) NUMBER(8)

12345

 →

1

2

3

4

5

 

NUMBER(P, s)

P는 전체 자리수 , S는 소수점 이하 자리수

 Ex) NUMBER(8.2)

123456.12

 →

1

2

3

4

5

6.

1

2

 

BLOB(LONG RAW)

Binary 데이터를 4 GB 저장할 수 있다

 

CLOB(LONG)

Text 데이터를 4 GB 저장할 수 있다.

 

DATE

날짜값을 저장할 수 있다. 초단위까지 저장가능.

2008-Feb-07

 →

2008-Feb-07

 

TIMESTAMP

년,월,일,시,분,초, Mili-Second까지 보여준다.

2008-Feb-07

 →

2008-Feb-07 7.20.10.0000001 AM

 

TIMESTAMP WITH TIME ZONE

지역시간과 세계표준시의 차이난 시간정보를 보여줌, +9:00는 그리니치 시간보다 9시간 빠르다는 의미.

2008-Feb-07

 → 

2008-Feb-07 7:20:10 +9:00

 

TIMESTAMP WITH LOCAL ZONE

지역시간으로 변환하여 저장해 줍니다.

2008-Feb-07

 →

2008-Feb-07 7:20:10 AM

 

INTERVAL YEAR TO MONTH

정의된 시간대로 날자를 계산하여 저장 해준다.

INTERVAL '312-2' YEAR(3) TO MONTH

 →

2008-Feb-07

 


+ Recent posts