Funkcje konwersji
Użyj WYTOPU i funkcje konwersji KONWERTUJ do przekonwertowania wyrażenia jednego typu danych na inny typ danych podczas konwersji typów danych nie są automatycznie wykonywane przez SQL Server.Na przykład, jeśli char i datetime wyrażenie lub smallint i int wyrażenia, lub char wyrażeń o różnej długości, SQL Server konwertuje automatycznie.Jest to nazywane niejawna konwersja.Za pomocą RZUTOWANIA lub konwersji te konwersje niejawne nie jest konieczne.Można jednak użyć ODDANYCH i PRZEKONWERTOWAĆ w następujących scenariuszach konwersji:
Dwa wyrażenia są dokładnie ten sam typ danych.
Dwa wyrażenia są niejawnie konwertowane.
Wymagane jest jawnie konwersji typów danych.
Jeśli konwersja nie jest to możliwe (na przykład konwersji char wyrażenie zawierającego litery int), SQL Server wyświetla komunikat o błędzie.
Funkcje WYTOPU i konwersji można również uzyskać różne formaty danych specjalnych i mogą być używane w liście, w klauzula WHERE i gdziekolwiek wyrażenie jest dozwolona.
Jeśli chcesz Transact-SQL kodu programu są zgodne z SQL-92, należy użyć ODDANYCH zamiast KONWERTOWANIA.Umożliwia konwertowanie zamiast ODDANYCH skorzystać z funkcji CONVERT.
Korzystając z WYTOPU lub KONWERTUJ, wymagane są następujące informacje:
Wyrażenie do konwersji; na przykład raport sprzedaży wymaga danych sprzedaży do konwersji danych pieniężnej na danych znakowych.
Typ danych, na przykład konwertować określone wyrażenie, varchar lub innych SQL Server typu danych systemu.
Konwersja jest prawidłowa tylko dla czasu trwania funkcja RZUTOWANIA lub konwersji, chyba że przechowywać przekonwertowane wartości.
Jeśli nie określisz długości podczas konwersji typu danych SQL Server automatycznie dostarcza długość 30.
Przykłady
W następujących przykładach użyto CAST w pierwszym SELECT instrukcja i CONVERT w drugim SELECT instrukcja, aby przekonwertować Title kolumna do nvarchar(20) kolumna, aby długość Tytuły krótszych.
USE AdventureWorks2008R2;
GO
SELECT CAST(Title AS nvarchar(20)) AS Title, Revision
FROM Production.Document
WHERE Revision < 2 ;
GO
Or
USE AdventureWorks2008R2;
GO
SELECT CONVERT(nvarchar(20), Title) AS Title, Revision
FROM Production.Document
WHERE Revision < 2 ;
GO
Oto 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 kolumna, datetime kolumna, jest konwertowany na char(11) kolumna.
USE AdventureWorks2008R2 ;
GO
SELECT p.FirstName, p.LastName, CAST(e.HireDate AS char(11)) AS HireDate
FROM HumanResources.Employee AS e
JOIN Person.Person AS p ON e.BusinessEntityID = p.BusinessEntityID
WHERE p.FirstName = 'Kim' ;
GO
Oto zestaw wyników.
FirstName LastName HireDate
--------- ----------------------- -----------
Kim Abercrombie 2004-02-17
Kim Akers 2003-01-27
(2 row(s) affected)
Zobacz także