변환 함수
SQL Server에서 자동으로 데이터 형식을 변환하지 않을 경우 CAST와 CONVERT 변환 함수를 사용하여 식의 데이터 형식을 다른 데이터 형식으로 변환할 수 있습니다. 예를 들어 char와 datetime 식, smallint와 int 식 또는 길이가 서로 다른 두 char 식을 비교하면 SQL Server에서 이를 자동으로 변환합니다. 이를 암시적 변환이라고 합니다. 이러한 암시적 변환에는 CAST나 CONVERT를 사용할 필요가 없습니다. 그러나 다음과 같은 변환 시나리오에서는 CAST와 CONVERT를 사용할 수 있습니다.
두 식의 데이터 형식이 정확히 같을 때
두 식을 암시적으로 변환할 수 있을 때
명시적 데이터 형식 변환이 필요할 때
문자를 포함하는 char 식을 int로 변환하는 등 불가능한 변환을 시도하면 오류 메시지가 나타납니다.
CAST와 CONVERT 함수는 다양한 특수 데이터 형식을 가져오는 데 사용될 수 있고, WHERE 절의 SELECT 목록 및 식의 허용되는 모든 위치에서 사용 가능합니다.
SQL-92에 맞게 Transact-SQL 프로그램 코드를 변환하려면 CONVERT 대신 CAST를 사용하고, CONVERT의 기능이 필요하면 CAST 대신 CONVERT를 사용하십시오.
CAST나 CONVERT를 사용할 때는 다음 정보를 제공해야 합니다.
변환할 식. 예를 들어 매출 보고서를 작성하려면 통화 데이터를 문자 데이터로 변환한 매출 데이터가 필요합니다.
지정한 식을 변환할 데이터 형식. 예를 들면 varchar 또는 기타 SQL Server 시스템 데이터 형식입니다.
변환한 값을 저장하지 않는 한, 이 변환은 해당 CAST 또는 CONVERT 함수 실행 시간 중에만 유효합니다.
데이터 형식을 변환할 때 길이를 지정하지 않으면 SQL Server가 기본적으로 길이 30을 제공합니다.
예
다음 예의 첫 번째 SELECT 문에서는 CAST를 사용하고 두 번째 SELECT 문에서는 CONVERT를 사용하여 Title 열을 nvarchar(20) 열로 변환하여 제목 길이를 줄입니다.
USE AdventureWorks;
GO
SELECT CAST(Title AS nvarchar(20)) AS Title, Revision
FROM Production.Document
WHERE Revision < 2
GO
또는
USE AdventureWorks;
GO
SELECT CONVERT(nvarchar(20), Title) AS Title, Revision
FROM Production.Document
WHERE Revision < 2
GO
각 쿼리의 결과 집합은 다음과 같습니다.
Title Revision
-------------------- --------
Crank Arm and Tire M 0
Front Reflector Brac 1
Installing Replaceme 0
Repair and Service G 0
Training Wheels 2 1
(5 row(s) affected)
다음 예에서는 HireDate 열과 datetime 열이 char(11) 열로 변환됩니다.
USE AdventureWorks
GO
SELECT c.FirstName, c.LastName, CAST(e.HireDate AS char(11)) AS HireDate
FROM HumanResources.Employee e
JOIN Person.Contact c ON e.EmployeeID = c.ContactID
WHERE c.FirstName = 'Kim'
GO
결과 집합은 다음과 같습니다.
FirstName LastName HireDate
--------- ----------------------- -----------
Kim Abercrombie Dec 12 1997
Kim Akers Mar 23 1998
(2 row(s) affected)