[DBMS] 데이터 형식과 관련된 시스템 함수

류재성's avatar
Dec 04, 2024
[DBMS] 데이터 형식과 관련된 시스템 함수
 
 

1. 데이터 형식 변환 함수

 
일반적으로 가장 많이 사용되는 데이터 형식 변환은 CAST()와 CONVERT() 함수이다. 두 함수는 형식만 다를 뿐 비슷한 기능을 한다.
 
CAST (표현식 AS 데이터형 [ (길이) ]) CONVERT (데이터형식 [ (길이) ], 표현식 [ , 스타일] )
 
예시를 확인해보자.
 
USE sqlDB SELECT AVG(amount) as "평균구매개수" FROM buyTb1
 
notion image
 
구매 테이블에서 평균 구매 개수를 구했다. 결과는 2가 나온다. 그 이유는 수량(amount) 컬럼의 데이터 형식이 정수형(INT)형이기 때문에 계산 결과도 정수형으로 나타난다.
 
이때 CAST() 나 CONVERT() 함수를 사용해 데이터 형식으 변환해야 한다.
 
SELECT AVG(CAST(amount AS FLOAT)) AS "평균구매개수" FROM buyTb1 또는 SELECT AVG(CONVERT(FLOAT,amount)) AS "평균구매개수" FROM buyTb1
 
notion image
 
실수형으로 데이터 형식을 변경하면 소수점까지 표기가 된다.
 

2. 암시적/ 명시적 형 변환

 
💡
형 변환에는 명시적 변환과 암시적 변환 두 가지가 있다. 명시적 변환이란 CAST() 또는 CONVERT() 함수를 이용해서 데이터 형식을 변환하는 것을 말한다. 반면 암시적 변환이란 형 변환을 하지 않고 자연스럽게 형이 변환되는 것을 의미한다.
 
DECLARE @myVar1 CHAR(3); SET @myVar1 = '100'; SELECT @myVar1 + '200'; -- 문자형 + 문자형 SELECT @myVar1 + 200; -- 문자형 + 정수형 SELECT @myVar1 + 200.0; -- 문자형 + 실수형
 
notion image
 
위의 결과처럼 변수 @myVar1 은 함께 연산되는 값의 데이터 형식에 맞게 자동으로 변환되는 것을 암시적 형 변환이라고 한다.
 
이를 명시적 형 변환으로 표기하면 다음과 같다.
 
DECLARE @myVar1 CHAR(3); SET @myVar1 = '100'; SELECT @myVar1 + '200'; -- 문자형 + 문자형 SELECT CAST(@myVar1 AS INT) + 200; -- 문자형 + 정수형 SELECT CAST(@myVar1 AS DECIMAL(5,1)) + 200.0; -- 문자형 + 실수형
 
형 변환을 할 떄 주의사항은 숫자에서 문자로 변환할 때 문자의 자릿수를 잘 보아야 한다는 점이다.
 
DECLARE @myVar2 DECIMAL(10,5); SET @myVar2 = 10.12345; SELECT CAST(@myVar2 AS NCHAR(5))
 
notion image
 
이 오류는 10.12345를 문자로 변환하게 되면 8자리로 변환되므로, NCHAR(5) 를 NCHAR(8) 이상으로 수정한 후에 사용해야 한다.
 
또 주의할 점은 실수를 정수로 변환할 때 자릿수가 잘릴 수 있다는 점을 고려해야 한다.
 
DECLARE @myVar3 DECIMAL(10,5); SET @myVar3 = 10.12345; SELECT CAST(@myVar3 AS INT); DECLARE @myVar4 DECIMAL(10,5); SET @myVar4 = 10.12345; SELECT CAST(@myVar4 AS DECIMAL(10,2));
notion image
 
두 결과에서 소수점이 잘리는 것을 유의해야 한다.
 
 
 
Share article

{CODE-RYU};