SQL기본 - 암시적 형변환과 명시적 형변환
2023. 3. 20. 13:50ㆍ공부/SQL
변환함수
DB에서 데이터 유형에 대한 형변환을 할 수 있는 방법은 두가지
1. 명시적 형변환 : 변환 함수를 사용하여 데이터 유형 변환을 명시적으로 나타냄
2. 암시적 형변환 : 데이터베이스가 내부적으로 알아서 데이터 유형을 변환함.
예를들어 아래와 같은 테이블이 있다고 가정해보자
CREATE TABLE sample_table (
id INTEGER,
name VARCHAR(20),
age INTEGER,
height FLOAT
);
INSERT INTO sample_table VALUES
(1, 'John', 25, 175.2),
(2, 'Jane', 30, 160.5),
(3, 'Mike', 35, 182.0);
이 테이블에서, age와 height는 각각 INTEGER와 FLOAT 데이터 타입을 가지고 있다. 이때, 다음과 같은 쿼리문이 실행된다고 하면?
SELECT age * height FROM sample_table;
형이 다른 age (INTEGER) 와 height(FLOAT)가 연산이 되면~ 반환 되는 타입은? => FLOAT
그렇다면 반환되는 타입의 우선순위가 존재하는지에 대해 궁금증이 든다.
더보기
암시적 형변환 반환 타입 우선순위
- BLOB, BINARY, VARBINARY, IMAGE
- TIMESTAMP, DATETIME, DATE
- DECIMAL, NUMERIC
- FLOAT, REAL
- BIGINT, INT, SMALLINT, TINYINT, BIT, BOOLEAN
- VARCHAR, NVARCHAR, CHAR, NCHAR
- UNIQUEIDENTIFIER, UUID
위와 같다고 한다. 이때 INT와 FLOAT를 연산 하는 경우 FLOAT가 우선순위가 더 높으므로 FLOAT를 반환하게 된다. 논리적으로 생각해보면 INT는 소수점을 표현하지 못하므로 당연히 FLOAT가 반환되는것이 맞으며 다른 경우도 논리적으로 생각하면 될것 같다.
명시적 형변환은 변환함수를 사용하여 타입을 변환하는데 예를들면
TO_NUMBER, TO_CHAR, TO_DATE와 같이 TO_를 이용하는 함수가 있고,
Null 관련함수로는 NVL(arg1, arg2) 와 같이 arg1이 null일 경우 arg2를 반환하는 함수 등 NullIF(), COALESCE()
'공부 > SQL' 카테고리의 다른 글
SQL 기본 - WHERE PHRASE (0) | 2023.03.20 |
---|---|
SQL #3 - CASE Function (0) | 2023.03.20 |
SQLD #02 Relationship & Identifiers (0) | 2023.03.14 |
SQLD 기초 #01 모델링 (0) | 2023.02.25 |
[SQL]Join (0) | 2023.02.03 |