Udostępnij za pośrednictwem


Conversion Functions

Użyj funkcji konwersji CAST i CONVERT do przekonwertowania wyrażenia jednego typu danych na inny typ danych podczas konwersji typu danych nie są automatycznie wykonywane przez SQL Server. Na przykład, jeśli char i datetime wyrażenie lub smallint a int wyrażenie, lub char wyrażenia różnej długości SQL Server konwertuje je automatycznie. Jest to określane jako niejawna konwersja.Za pomocą CAST lub CONVERT te konwersji niejawnych nie jest konieczne.Można jednak użyć CAST i CONVERT w następujących scenariuszach konwersji:

  • Dwa wyrażenia są dokładnie ten sam typ danych.

  • Dwa wyrażenia są niejawnie zamienne.

  • Wymagane jest jawne konwertowanie typów danych.

Podczas konwersji, która nie jest możliwe (na przykład, konwertowanie char wyrażenie, które zawiera litery int), SQL Server Wyświetla komunikat o błędzie.

Funkcje CAST i CONVERT może również służyć do uzyskiwania różnych formatów danych specjalnych i mogą być używane w liście, w klauzuli WHERE i z dowolnego miejsca wyrażenie jest dozwolone.

Jeśli chcesz Transact-SQL kod programu są zgodne z SQL-92, należy użyć CAST zamiast CONVERT. Użyj CONVERT zamiast CAST, aby skorzystać z funkcji CONVERT.

Korzystając z CONVERT lub CAST, wymagane są następujące informacje:

  • Wyrażenie do konwersji; na przykład raport wyników sprzedaży wymaga konwersji danych pieniężnych do danych znakowych dane o sprzedaży.

  • Typ danych do konwersji określone wyrażenie, na przykład varchar lub innych SQL Server Systemowy typ danych.

Konwersja jest prawidłowa tylko na czas trwania funkcja CAST lub CONVERT, chyba że przechowywać przekonwertowane wartości.

Jeśli nie określono długości podczas konwersji typu danych SQL Server automatycznie podaje długość 30.

Przykłady

W następujących przykładach użyto CAST w pierwszym SELECT Instrukcja i CONVERT w drugim SELECT Instrukcja przekonwertować Title Kolumna nvarchar(20) Kolumna, aby wprowadzić długość Tytuły krótszych.

USE AdventureWorks;
GO
SELECT CAST(Title AS nvarchar(20)) AS Title, Revision
FROM Production.Document
WHERE Revision < 2
GO

Or

USE AdventureWorks;
GO
SELECT CONVERT(nvarchar(20), Title) AS Title, Revision
FROM Production.Document
WHERE Revision < 2
GO

W tym polu jest zestaw wyników (dla dowolnej kwerendy).

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)

W poniższym przykładzie HireDate kolumny, Data/Godzina jest konwertowany kolumny char(11) Kolumna.

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

Here is the result set.

FirstName       LastName                       HireDate
---------       -----------------------        -----------
Kim             Abercrombie                    Dec 12 1997
Kim             Akers                          Mar 23 1998

(2 row(s) affected)