1. 데이터 형식 변환 함수
일반적으로 가장 많이 사용되는 데이터 형식 변환은 CAST()와 CONVERT() 함수이다. 두 함수는 형식만 다를 뿐 비슷한 기능을 한다.
CAST (표현식 AS 데이터형 [ (길이) ]) CONVERT (데이터형식 [ (길이) ], 표현식 [ , 스타일] )
예시를 확인해보자.
USE sqlDB SELECT AVG(amount) as "평균구매개수" FROM buyTb1
구매 테이블에서 평균 구매 개수를 구했다. 결과는 2가 나온다. 그 이유는 수량(amount) 컬럼의 데이터 형식이 정수형(INT)형이기 때문에 계산 결과도 정수형으로 나타난다.
이때 CAST() 나 CONVERT() 함수를 사용해 데이터 형식으 변환해야 한다.
SELECT AVG(CAST(amount AS FLOAT)) AS "평균구매개수" FROM buyTb1 또는 SELECT AVG(CONVERT(FLOAT,amount)) AS "평균구매개수" FROM buyTb1
실수형으로 데이터 형식을 변경하면 소수점까지 표기가 된다.
2. 암시적/ 명시적 형 변환
형 변환에는 명시적 변환과 암시적 변환 두 가지가 있다. 명시적 변환이란 CAST() 또는 CONVERT() 함수를 이용해서 데이터 형식을 변환하는 것을 말한다. 반면 암시적 변환이란 형 변환을 하지 않고 자연스럽게 형이 변환되는 것을 의미한다.
DECLARE @myVar1 CHAR(3); SET @myVar1 = '100'; SELECT @myVar1 + '200'; -- 문자형 + 문자형 SELECT @myVar1 + 200; -- 문자형 + 정수형 SELECT @myVar1 + 200.0; -- 문자형 + 실수형
위의 결과처럼 변수 @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))
이 오류는 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));
두 결과에서 소수점이 잘리는 것을 유의해야 한다.
Share article