표현식 내에서 타입을 변환해야 할 때 자동으로 해당 타입으로 변환하는 것을 묵시적 타입 변환(implicit type conversion)이라고 한다. SET, MULTISET, LIST, SEQUENCE는 명시적으로 변환되어야 한다.
DATETIME, TIMESTAMP 타입을 DATE 타입이나 TIME 타입으로 변환하면 데이터의 일부가 유실될 수 있다. DATE 타입을 DATETIME 타입이나 TIMESTAMP 타입으로 변환하면, 시간은 '12:00:00: AM'으로 설정된다.
문자열 타입이나 정확한 수치형 타입을 부동소수점 수치형 타입으로 변환하면 정확하지 않을 수 있다. 이는 문자열 타입과 정확한 수치형 타입은 값을 표현하기 위해 십진 정밀도(decimal precision)를 사용하지만 부동소수점 수치형 타입은 이진 정밀도(binary precision)를 사용하기 때문이다.
CUBRID가 수행하는 묵시적 타입 변환은 다음과 같다.
묵시적 타입 변환 표 1
From \ To |
DATETIME |
DATE |
TIME |
TIMESTAMP |
DOUBLE |
FLOAT |
NUMERIC |
BIGINT |
---|---|---|---|---|---|---|---|---|
DATETIME |
- |
O |
O |
O |
||||
DATE |
O |
- |
O |
|||||
TIME |
- |
|||||||
TIMESTAMP |
O |
O |
O |
- |
||||
DOUBLE |
- |
O |
O |
O |
||||
FLOAT |
O |
- |
O |
O |
||||
NUMERIC |
O |
O |
- |
O |
||||
BIGINT |
O |
O |
O |
- |
||||
INT |
O |
O |
O |
O |
O |
|||
SHORT |
O |
O |
O |
O |
||||
MONETARY |
O |
O |
O |
O |
||||
BIT |
||||||||
VARBIT |
||||||||
CHAR |
O |
O |
O |
O |
O |
O |
O |
O |
VARCHAR |
O |
O |
O |
O |
O |
O |
O |
O |
NCHAR |
O |
O |
O |
O |
O |
O |
O |
O |
VARNCHAR |
O |
O |
O |
O |
O |
O |
O |
O |
묵시적 타입 변환 표 2
From \ To |
INT |
SHORT |
MONETARY |
BIT |
VARBIT |
CHAR |
VARCHAR |
NCHAR |
VARNCHAR |
---|---|---|---|---|---|---|---|---|---|
DATETIME |
O |
O |
O |
O |
|||||
DATE |
O |
O |
O |
O |
|||||
TIME |
O |
O |
O |
O |
|||||
TIMESTAMP |
O |
O |
O |
O |
|||||
DOUBLE |
O |
O |
O |
O |
O |
O |
O |
||
FLOAT |
O |
O |
O |
O |
O |
O |
O |
||
NUMERIC |
O |
O |
O |
O |
O |
O |
O |
||
BIGINT |
O |
O |
O |
O |
O |
O |
O |
||
INT |
- |
O |
O |
O |
O |
O |
O |
||
SHORT |
O |
- |
O |
O |
O |
O |
O |
||
MONETARY |
O |
O |
- |
O |
O |
O |
O |
||
BIT |
- |
O |
O |
O |
O |
O |
|||
VARBIT |
O |
- |
O |
O |
O |
O |
|||
CHAR |
O |
O |
O |
O |
O |
- |
O |
O |
O |
VARCHAR |
O |
O |
O |
O |
O |
O |
- |
O |
O |
NCHAR |
O |
O |
O |
O |
O |
O |
O |
- |
O |
VARNCHAR |
O |
O |
O |
O |
O |
O |
O |
O |
- |