SQL CAST 함수 - SQL CAST hamsu

MSSQL에서 사용되는 데이터 타입 변환 함수는 CONVERT함수와 CAST함수입니다. 두 함수 다 하나의 유형에서 다른 유형으로 데이터를 변환하는 데 사용합니다. 쓰는 방식만 조금 다르고 하는 일은 같습니다. 자세한 설명은 해당 사이트에 있으니 참조하시기 바랍니다.

Conver함수와 Cast함수 사용링크

Convert

개인적으로 가장 많이 사용하는 데이터 변환 함수라고 생각합니다. 날짜 변환하는데도 유용하게 사용 가능합니다. 참고로 부동 소수점 또는 숫자에서 정수로 변환할 때 CONVERT() 함수는 결과를 자르고 다른 변환일 경우에는 반올림합니다.

사용법

--문법--
CONVERT(data_type[(length)], expression[style])
--예시--
SELECT CONVERT(NVARCHAR(10),칼럼) AS 칼럼명 FROM MY_TABLE --VARCHAR로 변환
SELECT CONVERT(INT,칼럼) AS 칼럼명 FROM MY_TABLE --INT로 변환
SELECT CONVERT(CHAR,칼럼) AS 칼럼명 FROM MY_TABLE --CHAR로 변환

expression : 유효한 식
data_type : 대상 데이터 형식 별칭 데이터 형식은 사용할 수 없습니다.
length : 대상 데이터 형식의 길이를 지정하는 선택적 정수입니다. 기본값은 30입니다.
style : Convert함수가 식을 변환하는 방법을 지정하는 정수 식입니다. style이 Null이면 Null 값이 반환됩니다.

예제

--테이블(MY_TABLE)의 나이(AGE)칼럼을 INT에서 CHAR로 형변환--
SELECT CONVERT(NVARCHAR(10),AGE)+'세'AS 나이 FROM MY_TABLE

--테이블(MY_TALBE)에서 날짜(DTS)칼럼을 INT에서 DATE로 형변환--
SELECT CONVERT(DATE,SUBSTRING(DTS,1,8))AS 날짜 FROM MY_TABLE

Convert 날짜 변환 표

SQL CAST 함수 - SQL CAST hamsu

Cast

※ FLOAT, 또는 NUMBERIC에서 INTEGER로 변환할 때 CAST() 함수는 결과를 자릅니다.

사용법

--문법--
CAST(expression AS data_type(length))
--예시--
SELECT CAST(칼럼 AS INT) FROM  MY_TABLE

예제

--테이블(MY_TALBE)에서 가격(PRICE)칼럼을 INT에서 VARCHAR로 형변환
SELECT CAST(PRICEAS AS VARCHAR)AS 가격 FROM  MY_TABLE

[MS_SQL] 문자열 자르기 (LEFT, RIGHT, SUBSTRING) 사용법 & 예제

[MS_SQL] 문자열 치환 (REPLACE, STUFF) 사용법 & 예제

[MS_SQL] 날짜 함수(GETDATE, DATEADD, DATEPART, DATEDIFF) 사용법 & 예제

[MS_SQL] 공백 제거 (LTRIM, RTRIM) 사용법 & 예제

[MS_SQL] 조건문 (CASE WHEN, IF) 함수 사용법 & 예제

CAST 함수 또는 CONVERT 함수를 사용하여 데이터 형변환을 할 수 있습니다.

SELECT로 검색을 하는 경우 또는 INSET, UPDATE로 칼럼에 값을 넣어야 하는 경우 설정한 데이터 타입에 맞춰서 넣어줘야 하는 경우 형변환 함수를 사용합니다.

CAST / CONVERT 함수 사용 방법

CAST 함수를 사용하면 지정한 값을 다른 테이터 타입으로 변환할 수 있습니다.

CAST(expr AS type)

CONVERT 함수도 지정한 값을 다른 테이터 타입으로 변환하고 싶을 때 사용합니다.

CONVERT(expr, type)

expr에는 값을 지정합니다.

type에는 변환하고 싶은 데이터 타입을 지정합니다.

지정할 수 있는 데이터 타입 아래와 같습니다.

BINARY[(N)]
CHAR[(N)] [charset_info]
DATE
DATETIME
DECIMAL[(M[,D])]
JSON
NCHAR[(N)]
SIGNED [INTEGER]
TIME
UNSIGNED [INTEGER]

CAST 함수를 사용해 현재 시간을 SIGNED 타입으로 변환하는 예제를 보겠습니다.

SELECT CAST(NOW() AS SIGNED);
> 20210527135358

이번에는 CONVERT 함수를 사용해 SIGNED 타입으로 변환하는 예제를 보겠습니다.

SELECT CONVERT(NOW(), SIGNED);
> 20210527135712

숫자날짜 타입으로 변환해보겠습니다.

SELECT CAST(20200101 AS DATE);
SELECT CONVERT(20200101, DATE);
> 2020-01-01

숫자문자열 형태로 변환해보겠습니다.

SELECT CAST(20200101030330 AS CHAR);
SELECT CONVERT(20200101030330, CHAR);
> 20200101030330

CAST 함수와 CONVERT 함수를 사용하면 원하는 형태로 데이터 타입을 변경할 수 있습니다.

데이터를 검색하거나 등록하는 경우에 칼럼에 맞는 타임으로 지정하지 않으면 원하는 결과를 얻지 못하는 경우가 생깁니다.

또는 취득한 데이터를 SQL에서 편집하고 싶은 경우에도 데이터 타입에 따라 결과가 달라지기도 합니다.

원하는 결과가 얻지 못하는 경우에는 데이터 타입을 변환해서 확인해보는 것도 좋습니다.

SQL CAST 함수 - SQL CAST hamsu

형 변환 함수 CONVERT와 CAST에 대해 알아보자

CAST

CAST(유효한식 AS 데이터형식(길이))

CAST( expression AS data_type( length ) )

SELECT 29.8 -- 결과 : 29.8
SELECT CAST(29.8 AS INT) -- 결과 : 29

29.8을 INT 형으로 변환하면 정수형인 29이 결과로 출력된다.

SELECT 3 + 'age' -- Error 발생
SELECT CAST(3 AS VARCHAR) + 'age' -- 결과 : 3age

1. 첫 번째 INT 타입의 3과 VARCHAR 타입의 'age'를 합치려 하니

Conversion failed when converting the varchar value 'age' to data type int.

다음과 같은 오류가 발생하게 된다.

2. CAST 함수를 이용해 3을 VARCHAR로 변환하면 문자열 3과 age가 합쳐셔 3age라는 결과가 출력된다.

CONVERT

CONVERT( 데이터형식 [ ( 길이 ) ] , 유효한식 [ , 스타일 ] )

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

SELECT 29.8 -- 결과 : 29
SELECT CONVERT(INT, 29.8) -- 결과 : 29

위의 CAST 함수에서와 동일하게 29.8을 INT형으로 변환하여 정수형 29를 출력했다.

SELECT GETDATE() -- 결과 : 2018-08-06T06:10:48.073Z
SELECT CONVERT(VARCHAR, GETDATE(), 23) -- 결과 : 2018-08-06

날짜 함수 GETDATE()를 스타일을 줘서 yyyy-MM-dd의 형태로 변환해 보았다.

기타 다른 스타일별 날짜 형식은 다음 글을 참고하자.

[MSSQL] 날짜 변환표 CONVERT, GETDATE() 날짜 형식 포맷 변경
[MSSQL] VARCHAR 타입의 날짜를 DATETIME으로 변경 (날짜변환, 시간변환)
[MSSQL] 돈 금액 천단위 콤마 찍기
[MSSQL] 월 말일 날짜 가져오기