Поделиться через


Функции преобразования

Используйте функции преобразования CAST и CONVERT для преобразования выражений одного типа данных к другому типу, если SQL Server 2005 не выполняет автоматическое преобразование типов данных. Например при сравнении выражений типов char и datetime, smallint и int или выражений типа char с разной длиной SQL Server выполняет их автоматическое преобразование. Такое преобразование называется неявным. Использовать функции CAST или CONVERT для подобных неявных преобразований нет необходимости. Однако функции CAST и CONVERT можно использовать в следующих сценариях преобразования:

  • два выражения принадлежат к одному и тому же типу данных;
  • два выражения неявно преобразуются друг в друга;
  • необходимо явное преобразование типов данных.

При попытке недопустимого преобразования (например преобразования выражения типа char, содержащего буквенные символы, к типу int), SQL Server отображает сообщение об ошибке.

Функции CAST и CONVERT могут также использоваться для получения разнообразных специальных форматов данных, а также могут использоваться в списке выбора, в предложении WHERE, и там, где допустимы выражения.

Если нужно обеспечить совместимость программного кода на языке Transact-SQL со стандартом SQL-92, следует использовать вместо функции CONVERT функцию CAST. Использование функции CONVERT вместо CAST дает преимущество в дополнительной функциональности.

При использовании любой из функций CAST или CONVERT необходимо указать следующее.

  • Выражение для преобразования: например, для отчета о продажах может потребоваться преобразование данных о продажах из денежного типа в символьный.
  • Тип данных, в который преобразуется указанное выражение, например varchar или какой-либо другой системный тип данных SQL Server.

Преобразование действительно только на время выполнения функции CAST или CONVERT, если преобразованное значение не сохраняется.

Если при преобразовании типа данных не указать длину, SQL Server автоматически примет ее равной 30.

Примеры

В следующих примерах функция CAST используется в первой инструкции SELECT, а CONVERT — во второй инструкции SELECT для преобразования столбца 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)

См. также

Основные понятия

Преобразование типов данных (компонент Database Engine)

Другие ресурсы

Функции CAST и CONVERT (Transact-SQL)
Функции (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005