CAST i CONVERT (Transact-SQL)
Konwertuje wyrażenie jednego typu danych do innego w SQL Server 2008 R2.
Składnia
Syntax for CAST:
CAST ( expression AS data_type [ ( length ) ] )
Syntax for CONVERT:
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
Argumenty
expression
Wszelkie obowiązuje wyrażenie.data_type
Jest to typ danych miejsce docelowe .This includes xml, bigint, and sql_variant.Nie można używać typów danych aliasu.Aby uzyskać więcej informacji na temat dostępnych typów danych, zobacz Typy danych (Transact-SQL).length
Jest opcjonalną liczbę całkowitą, która określa długość typ danych miejsce docelowe .Wartość domyślna to 30.style
Jest całkowitą wyrażenie , które określa sposób konwersji, funkcja tłumaczenia, expression.Jeśli styl ma wartość NULL, zostanie zwrócona wartość NULL.zakres jest określana przez data_type.Aby uzyskać więcej informacji zobacz sekcję Spostrzeżenia.
Zwracane typy
Zwraca expression dokonać translacji data_type.
Uwagi
Data i godzina style
Gdy expression jest to typ danych data lub czas , style może być jedną z wartości podane w poniższej tabela.Inne wartości są przetwarzane jako 0.SQL Serverobsługuje format data w stylu języka arabskiego, przy użyciu algorytmu kuwejcki.
Bez stulecia (RR) (1) |
W wieku (rrrr) |
Standard |
Wejścia i wyjścia (3) |
---|---|---|---|
- |
0 or 100 (1,2) |
Default |
Pon dd rrrr hh:miAM (lub PM) |
1 |
101 |
USA |
dd/mm/rrrr |
2 |
102 |
ANSI |
yy.mm.dd |
3 |
103 |
Brytyjskie i francuski |
mm/dd/rrrr |
4 |
104 |
Niemiecki |
dd.mm.yy |
5 |
105 |
Włoski |
dd-mm rr |
6 |
106(1) |
- |
dd mon RR |
7 |
107(1) |
- |
Pon dd, RR |
8 |
108 |
- |
hh:mi:ss |
- |
9 or 109 (1,2) |
Domyślne + milisekund |
Pon dd rrrr hh:mi:ss:mmmAM (lub PM) |
10 |
110 |
USA |
dd-mm rr |
11 |
111 |
JAPONIA |
dd/mm/rr |
12 |
112 |
ISO |
rrmmdd RRRRMMDD |
- |
13 or 113 (1,2) |
Domyślne Europy + milisekund |
dd mon rrrr hh:mi:ss:mmm(24h) |
14 |
114 |
- |
hh:mi:ss:mmm(24h) |
- |
20 or 120 (2) |
Kanoniczna ODBC |
rrrr mm-dd hh:mi:ss(24h) |
- |
21 or 121 (2) |
ODBC kanoniczny (w milisekundach) |
rrrr mm-dd hh:mi:ss.mmm(24h) |
- |
126 (4) |
ISO8601 |
rrrr mm-ddThh:mi:ss.mmm (bez spacji) |
- |
127(6, 7) |
ISO8601 ze strefy czas Z. |
rrrr mm-ddThh:mi:ss.mmmZ (bez spacji) |
- |
130 (1,2) |
Hijri (5) |
dd mon rrrr hh:mi:ss:mmmAM |
- |
131 (2) |
Hijri (5) |
hh:mi:ss:mmmAM mm/dd/rr |
1 Te wartości stylu zwracają rodzaju wyniki.Zawiera wszystkie (RR) (bez stulecia) style i podzbiór (rrrr) (z century) style.
2 The default values (style0 or 100, 9 or 109, 13 or 113, 20 or 120, and 21 or 121) always return the century (yyyy).
3 Dane wejściowe podczas konwertowania datetime; dane wyjściowe podczas konwertowania danych znakowych.
4 XML przeznaczony.Do konwersji z datetime lub smalldatetime do danych znakowych format wyjściowy jest zgodnie z opisem w poprzedniej tabela.
5 Hidżry jest systemem kalendarza z kilka zmian.SQL ServerAlgorytm kuwejcki.
Ważne: |
---|
Domyślnie SQL Server interpretuje dwucyfrowe lata na podstawie odcięcia roku 2049.Oznacza to, że rok dwucyfrowy 49 jest interpretowana jako 2049 i dwucyfrowy rok 50 jest interpretowana jako 1950.Wiele aplikacji klient , takie jak te oparte na obiektach automatyzacji za pomocą odcięcia roku 2030.SQL Serverzawiera two digit year cutoffużywana opcjakonfiguracja zmiany odcięcia roku przez SQL Server i umożliwia spójne traktowanie daty.Zaleca się określenie czterech cyfr. |
6 Obsługiwana tylko oddał znaków danych do datetime lub smalldatetime.Gdy dane znakowe, reprezentujący tylko data lub tylko składniki czas mają być rzutowane na datetime lub smalldatetime typów danych składnik nieokreślony czas jest zestaw na 00:00:00.000 i składnik nieokreślony data jest zestaw na 1900-01-01.
7Wskaźnik strefy opcjonalne czas Z, jest używany do ułatwienia mapowanie XML datetime wartości, które mają informacji o strefie czas SQL Server datetime wartości zawierające nie stref czas .Z to wskaźnik dla strefy czas UTC 0.Innych strefach czas , są oznaczone gg: mm przesunięcie w + lub - w kierunku.Na przykład: 2006-12-12T23:45:12-08:00.
Podczas konwertowania danych znakowych z smalldatetime, style, które obejmują sekundach i milisekundach Wyświetlanie zer w tych pozycjach.Można skrócić niechciane data części podczas konwersji z datetime lub smalldatetime wartości przy użyciu odpowiednich char lub varchar Typ danych długość.
Podczas konwertowania datetimeoffset z danych znakowych styl zawiera czas, strefa czas przesunięcie jest dołączana do wyniku.
Pływak i rzeczywistym style
Gdy expression jest float lub real, style może być jedną z wartości podane w poniższej tabela.Inne wartości są przetwarzane jako 0.
Wartość |
Output |
---|---|
0 (wartość domyślna) |
Maksymalnie 6 cyfr.Użyj w notacji naukowej, w stosownych przypadkach. |
1 |
Zawsze 8 cyfr.Zawsze używaj w notacji naukowej. |
2 |
Zawsze 16 cyfr.Zawsze używaj w notacji naukowej. |
126, 128, 129 |
Uwzględniony ze względu na starszych i może być zaniechane w przyszłym wydaniu. |
pieniądze i smallmoney style
Gdy expression jest money lub smallmoney,style może być jedną z wartości podane w poniższej tabela.Inne wartości są przetwarzane jako 0.
Wartość |
Output |
---|---|
0 (wartość domyślna) |
Nie przecinkami co trzy cyfry po lewej stronie przecinka dziesiętnego i dwoma cyframi po prawej stronie przecinka dziesiętnego; na przykład 4235.98. |
1 |
Przecinki co trzy cyfry po lewej stronie przecinka dziesiętnego i dwoma cyframi po prawej stronie przecinka dziesiętnego; na przykład 3,510.92. |
2 |
Nie przecinkami co trzy cyfry po lewej stronie przecinka dziesiętnego, a cztery cyfry po prawej stronie przecinka dziesiętnego; na przykład 4235.9819. |
126 |
Odpowiednik styl 2 podczas konwersji na char(n) lub varchar(n) |
Style XML
Gdy expression jest xml, style może być jedną z wartości podane w poniższej tabela.Inne wartości są przetwarzane jako 0.
Wartość |
Output |
---|---|
0 (wartość domyślna) |
Za pomocą domyślną metodę analizy odrzuca nieznaczących światło i nie zezwala na wewnętrznym DTD podzbiór.
Uwaga:
Podczas konwertowania xml typu danych, SQL Server nieznaczących owiatło przebiega inaczej niż w XML 1.0.Aby uzyskać więcej informacji, zobacz Generowanie instancji XML.
|
1 |
Zachowaj nieznaczących odstępu.To ustawienie stylu ustawia domyślne XML: Space obsługi działają tak samo, jak w przypadku XML: Space = "zachować" została określona w zamian. |
2 |
Włącz ograniczone przetwarzanie wewnętrznego podzbiór DTD. Jeśli klucz jest włączony, serwer może używać następujących informacji przewidziana w DTD wewnętrznego podzbiór do wykonywania operacji analizy nonvalidating.
Analizator składni będzie ignorować zewnętrznych podzestawy DTD.Również nie ocenia XML deklaracja Zobacz czy standalone atrybut jest zestaw Tak lub nie, ale zamiast niego analizuje wystąpienie XML tak, jakby był dokumentem autonomicznym. |
3 |
Zachowaj nieznaczących światło i włączyć ograniczone przetwarzanie wewnętrznego podzbiór DTD. |
Style binarne
Gdy expression jest binary(n), varbinary(n), char(n), lub varchar(n), style może być jedną z wartości podane w poniższej tabela.Styl wartości, które nie są wymienione w tabela zwracać błąd.
Wartość |
Output |
---|---|
0 (wartość domyślna) |
Tłumaczy znaki ASCII do binarnego lub binarne bajtów do znaków ASCII.Każdy znak lub bajt jest konwertowany 1: 1. Jeśli data_type jest to typ binarny znaków 0 x dodaje się po lewej stronie wyników. |
1, 2 |
Jeśli data_type jest typ binarny wyrażenie musi być znak wyrażenie.expression Muszą się składać z parzystej liczby szesnastkowe cyfry (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, d, b, c, e, f).Jeśli style jest zestaw na 1 znaków 0 x musi być dwóch pierwszych znaków w wyrażenie.Błąd jest wywoływane, jeśli wyrażenie zawiera nieparzystą liczbę znaków lub znaków jest nieprawidłowych. Jeśli długość przekonwertowanych wyrażenie jest większa niż długość data_type wynik będzie prawo obcięta. Stała długość data_types , które są większe, a następnie przekonwertowany wynik będzie miał zer dodaje się po prawej stronie wyników. Jeśli data_type jest typ znaków, wyrażenie musi być binarny wyrażenie.Każdy binary znak jest konwertowany na dwóch znaków szesnastkowych.Jeśli długość przekonwertowanych wyrażenie jest większa niż data_type długość zostanie prawo obcięty. Jeśli data_type jest typ znaków poprawka o rozmiarze i długość przekonwertowanych wyników jest mniejsza niż długość jego data_type; spacje są dodawane po prawej stronie przekonwertowanych wyrażenie , aby utrzymać parzystą liczbę cyfr szesnastkowych. Znaki 0 x zostanie dodany po lewej stronie przekonwertowany wynik dla style 1. |
Konwersje niejawne
Konwersje niejawne są te konwersje występujące bez określania RZUTOWANIA lub konwersji funkcja.Konwersje jawne są te konwersje, które wymagają RZUTOWANIA lub konwersji z funkcja ma być określony.Na następującej ilustracji pokazano wszystkie konwersje typów danych bezpośrednie i pośrednie, które są dozwolone dla SQL Server typów danych dostarczonych przez system.These include xml, bigint, and sql_variant.Nie ma żadnych niejawna konwersja przydziału z sql_variant Typ danych, ale jawna konwersja na sql_variant.
Podczas konwersji między datetimeoffset i typy znaków char, varchar, nchar, i nvarchar strefy przekonwertowanych czas przesunięcia części powinny zawsze być podwójny cyfr HH i MM dla przykładu, - 08:00.
Ostrzeżenie
Ponieważ dane Unicode zawsze używa parzysta liczba bajtów, zachować ostrożność podczas konwertowania binary lub varbinary do lub z Unicode obsługiwane typy danych.Na przykład następujące konwersji nie zwraca wartości szesnastkowej 41; Zwraca 4100: SELECT CAST(CAST(0x41 AS nvarchar) AS varbinary).
Duża wartość typów danych
Typy danych wartości duże wyraźnie wykazują takie samo zachowanie niejawne i jawne konwersji, jak ich odpowiedniki mniejszych varchar, nvarchar i varbinary typów danych.Jednakże należy wziąć pod uwagę następujące wskazówki:
Konwersja z image do varbinary(max) i na odwrót jest niejawna konwersja i tak są podczas konwersji między text i varchar(max), i ntext i nvarchar(max).
Typy konwersji z dużą wartość danych, takich jak varchar(max), do wpisz mniejszych dane uzupełniające, takie jak varchar, jest niejawna konwersja, ale obcinania wystąpi, jeśli duża wartość jest za duży dla określonej długości mniejszych typu danych.
Konwersja z varchar, nvarchar, lub varbinary na odpowiadające im dane dużą wartość typów odbywa się niejawnie.
Konwersja z sql_variant Typ danych do typów danych dużą wartość jest jawna konwersja.
Nie można przekonwertować typu danych wartość duża sql_variant typu danych.
Aby uzyskać informacje dotyczące konwertowania Microsoft .NET Framework language runtime (CLR) zdefiniowane przez użytkownika typowych, zobacz Wykonywanie operacji na typy zdefiniowane przez użytkownika.Aby uzyskać więcej informacji dotyczących sposobu konwertowania z xml typu danych, zobacz Generowanie instancji XML.
Typ danych XML
Gdy użytkownik jawnie lub niejawnie oddanych xml Typ danych ciąg lub typ danych binarnych, zawartość xml zaszeregować typu danych oparte na zestaw reguł.Aby uzyskać informacje dotyczące tych reguł, zobacz Szeregowanie danych XML.Aby uzyskać informacje o rzutować zdefiniowany przez użytkownika typ CLRz pliku XML, zobacz Wykonywanie operacji na typy zdefiniowane przez użytkownika.Aby uzyskać informacje o konwersji z innymi typami danych, aby xml typu danych, zobacz Generowanie instancji XML.
Typy danych tekst i obraz
Konwersja typu danych automatyczne nie jest obsługiwana dla text i image typów danych.Można jawnie przekonwertować text danych do danych znakowych i image danych do binary lub varbinary, ale maksymalna długość wynosi 8000 bajtów.Jeśli spróbuj niepoprawne konwersji, takich jak próby konwersji znaków wyrażenie , które zawiera litery do int, SQL Server zwraca komunikat o błędzie.
Sortowanie danych wyjściowych
Gdy dane wyjściowe RZUTOWANIA lub konwersji jest ciągznaków, a dane wejściowe są znaków ciąg, dane wyjściowe ma tego samego sortowanie i etykieta sortowanie jako dane wejściowe.Jeśli dane wejściowe nie jest ciągznaków, dane wyjściowe ma domyślne sortowanie bazy danych i etykietę sortowanie domyślne coercible.Aby uzyskać więcej informacji, zobacz Priorytet sortowania języka Transact-SQL).
Aby przypisać różne sortowanie danych wyjściowych, zastosowanie klauzula COLLATE wynik wyrażenie funkcjaCONVERT lub CAST.Na przykład:
SELECT CAST('abc' AS varchar(5)) COLLATE French_CS_AS
Obcinanie i zaokrąglania wyników
Podczas konwersji znaków lub wyrażeń binarny (char, nchar, nvarchar, varchar, binary, lub varbinary) wyrażenie typu różnych danych, dane mogą być skrócone, tylko częściowo wyświetlany lub zwracany jest błąd, ponieważ wynik jest zbyt krótki, by wyświetlania.Konwersje do char, varchar, nchar, nvarchar, binary, i varbinary są obcinane, z wyjątkiem przypadku konwersji pokazane w poniższej tabela.
Z typem danych |
Typ danych |
Wynik |
---|---|---|
int, smallint lub tinyint |
char |
* |
|
varchar |
* |
|
nchar |
E |
|
nvarchar |
E |
money, smallmoney, numeric, decimal, float, or real |
char |
E |
|
varchar |
E |
|
nchar |
E |
|
nvarchar |
E |
* = Długość wyniku zbyt krótki.E = zwrócony, ponieważ długość wynik jest zbyt krótki.
SQL Servergwarancje tylko roundtrip konwersje, konwersje, które konwersji typu danych z jego typ danych źródłowych i z powrotem, będzie dają te same wartości z wersja , do wersja.Konwersja roundtrip w poniższym przykładzie:
DECLARE @myval decimal (5, 2)
SET @myval = 193.57
SELECT CAST(CAST(@myval AS varbinary(20)) AS decimal(10,5))
-- Or, using CONVERT
SELECT CONVERT(decimal(10,5), CONVERT(varbinary(20), @myval))
Ostrzeżenie
Nie należy do konstruowania binary wartości, a następnie przekonwertować je do danych wpisz kategorii typu danych liczbowych.SQL Servernie zagwarantować, że wynik decimal lub numeric konwersji na typ danych binary będą takie same między wersjami SQL Server.
Poniższy przykład pokazuje wynikowe wyrażenie , które jest zbyt mały.
USE AdventureWorks2008R2;
GO
SELECT p.FirstName, p.LastName, SUBSTRING(p.Title, 1, 25) AS Title, CAST(e.SickLeaveHours AS char(1)) AS 'Sick Leave'
FROM HumanResources.Employee e
JOIN Person.Person p ON e.BusinessEntityID = p.BusinessEntityID
WHERE NOT e.BusinessEntityID >5;
Oto zestaw wyników.
FirstName LastName Title Sick Leave
--------- ------------- ---------- -----------
Ken Sanchez NULL *
Terri Duffy NULL *
Roberto Tamburello NULL *
Rob Walters NULL *
Gail Erickson Ms. *
(5 row(s) affected)
Podczas konwersji typów danych, które różnią się w miejscach dziesiętnych czasami wartość wyniku jest obcinany i innym razem jest zaokrąglana.W poniższej tabela przedstawiono zachowanie.
Z |
Aby |
Zachowanie |
---|---|---|
numeric |
numeric |
Round |
numeric |
int |
Obciąć |
numeric |
money |
Round |
money |
int |
Round |
money |
numeric |
Round |
float |
int |
Obciąć |
float |
numeric |
Round |
float |
datetime |
Round |
datetime |
int |
Round |
Na przykład wynik następującej konwersji jest 10:
SELECT CAST(10.6496 AS int)
Podczas konwersji typów danych, których typ danych miejsce docelowe jest mniej miejsc dziesiętnych niż typ źródło danych, wartość jest zaokrąglana.Na przykład wynik następującej konwersji jest $10.3497:
SELECT CAST(10.3496847 AS money)
SQL ServerZwraca komunikat o błędzie podczas nienumeryczne char, nchar, varchar, lub nvarchar danych jest konwertowana na int, float, numeric, lub decimal.SQL Serverrównież zwraca błąd, gdy pusty ciąg (" ") jest konwertowany na numeric lub decimal.
Nondeterministic w SQL Server 2005 i nowszej wersji są pewne konwersje typu Data/Godzina
W SQL Server 2000, ciąg do konwersji data i czas są oznaczone jako deterministyczny.Jednak nie jest to prawdą w przypadku stylów wymienione w poniższej tabela.Dla tych stylów konwersje są zależne od ustawień języka.SQL Server 2005i jego nowsze wersje Oznacz te konwersje jako rodzaju.
W poniższej tabela wymieniono style dla którego ciąg-do-konwersja typu Data/Godzina jest rodzaju.
Wszystkie style poniżej 1001 |
106 |
107 |
109 |
113 |
130 |
1 z wyjątkiem style 20 i 21
Przykłady
A.Obie ODDANYCH i konwertowanie
Każdy przykład pobiera nazwę produktu dla tych produktów, które mają 3 w pierwszej cyfry ich cena rynkowa i konwertuje ich ListPrice do int.
-- Use CAST
USE AdventureWorks2008R2;
GO
SELECT SUBSTRING(Name, 1, 30) AS ProductName, ListPrice
FROM Production.Product
WHERE CAST(ListPrice AS int) LIKE '3%';
GO
-- Use CONVERT.
USE AdventureWorks2008R2;
GO
SELECT SUBSTRING(Name, 1, 30) AS ProductName, ListPrice
FROM Production.Product
WHERE CONVERT(int, ListPrice) LIKE '3%';
GO
B.RZUTOWANIE przy użyciu operatorów arytmetycznych
W poniższym przykładzie oblicza obliczenie pojedynczej kolumna (Computed) poprzez podzielenie całkowitej roku-do-data sprzedaży (SalesYTD) przez wartość procentową Komisji (CommissionPCT).Ten wynik konwertowany jest na int Typ danych po zaokrąglić do najbliższej liczby całkowitej.
USE AdventureWorks2008R2;
GO
SELECT CAST(ROUND(SalesYTD/CommissionPCT, 0) AS int) AS 'Computed'
FROM Sales.SalesPerson
WHERE CommissionPCT != 0;
GO
Oto zestaw wyników.
Computed
------
379753754
346698349
257144242
176493899
281101272
0
301872549
212623750
298948202
250784119
239246890
101664220
124511336
97688107
(14 row(s) affected)
C.Aby złączyć za pomocą RZUTOWANIA
Poniższy przykład łączy używając wyrażeń noncharacter, Niebinarnych CAST.
USE AdventureWorks2008R2;
GO
SELECT 'The list price is ' + CAST(ListPrice AS varchar(12)) AS ListPrice
FROM Production.Product
WHERE ListPrice BETWEEN 350.00 AND 400.00;
GO
Oto zestaw wyników.
ListPrice
------------------
The list price is 357.06
The list price is 364.09
The list price is 364.09
The list price is 364.09
The list price is 364.09
(5 row(s) affected)
D.Za pomocą ODDANYCH do uzyskania bardziej czytelny tekst
W poniższym przykładzie użyto CAST na liście Wybierz, aby przekonwertować Name kolumna , aby char(10) kolumna.
USE AdventureWorks2008R2;
GO
SELECT DISTINCT CAST(p.Name AS char(10)) AS Name, s.UnitPrice
FROM Sales.SalesOrderDetail s JOIN Production.Product p on s.ProductID = p.ProductID
WHERE Name LIKE 'Long-Sleeve Logo Jersey, M';
GO
Oto zestaw wyników.
Name UnitPrice
---------- ---------------------
Long-Sleev 31.2437
Long-Sleev 32.4935
Long-Sleev 49.99
(3 row(s) affected)
E.Przy użyciu klauzulaLIKE RZUTOWANIA
Poniższy przykład konwertuje money kolumna SalesYTD do int i następnie do char(20) kolumna , tak że może być używany z LIKE klauzula.
USE AdventureWorks2008R2;
GO
SELECT p.FirstName, p.LastName, s.SalesYTD, s.BusinessEntityID
FROM Person.Person p JOIN Sales.SalesPerson s ON p.BusinessEntityID = s.BusinessEntityID
WHERE CAST(CAST(s.SalesYTD AS int) AS char(20)) LIKE '2%';
GO
Oto zestaw wyników.
FirstName LastName SalesYTD SalesPersonID
---------------- ------------------- ---------------- -------------
Tsvi Reiter 2811012.7151 279
Syed Abbas 219088.8836 288
Rachel Valdez 2241204.0424 289
(3 row(s) affected)
F.Korzystając z przycisku KONWERTUJ lub CAST maszynowy XML
Oto kilka przykładów przedstawiających przy użyciu PRZEKONWERTOWAĆ konwertują pismo XML za pomocą Typ danych xml.
W tym przykładzie konwertuje ciąg odstępu, tekst i znaczniki na pismo XML i usuwa wszystkie nieistotne białe miejsca (granica białe miejsca miedzy węzłami):
CONVERT(XML, '<root><child/></root>')
W tym przykładzie konwertuje podobne ciąg odstępu, tekst i znaczniki na pismo XML, zachowuje nieznaczących białe miejsca (granica białe miejsca miedzy węzłami):
CONVERT(XML, '<root> <child/> </root>', 1)
Posługując się miarką w tym przykładzie kątową ciąg odstępu, tekst i znaczników do wpisywanych XML:
CAST('<Name><FName>Carol</FName><LName>Elliot</LName></Name>' AS XML)
Aby zapoznać się z większą liczbą przykładów, zobacz Generowanie instancji XML.
G.Korzystanie z WYTOPU i KONWERTOWAĆ z danymi typu datetime
Poniższy przykład wyświetla bieżącą data i czas, korzysta z CAST do zmiany bieżącej data i czas na typ danych do znaków i następnie zastosowań CONVERT wyświetlania data i czas w ISO 8901 format.
SELECT
GETDATE() AS UnconvertedDateTime,
CAST(GETDATE() AS nvarchar(30)) AS UsingCast,
CONVERT(nvarchar(30), GETDATE(), 126) AS UsingConvertTo_ISO8601 ;
GO
Oto zestaw wyników.
UnconvertedDateTime UsingCast UsingConvertTo_ISO8601
----------------------- ------------------------------ ------------------------------
2006-04-18 09:58:04.570 Apr 18 2006 9:58AM 2006-04-18T09:58:04.570
(1 row(s) affected)
Poniższy przykład stanowi przeciwieństwo około poprzedniego przykładu.Przykład wyświetla data i czas jako znak danych używa CAST do zmiany danych znakowych na datetime Typ danych, a następnie używa CONVERT do zmiany danych znakowych na datetime typu danych.
SELECT
'2006-04-25T15:50:59.997' AS UnconvertedText,
CAST('2006-04-25T15:50:59.997' AS datetime) AS UsingCast,
CONVERT(datetime, '2006-04-25T15:50:59.997', 126) AS UsingConvertFrom_ISO8601 ;
GO
Oto zestaw wyników.
UnconvertedText UsingCast UsingConvertFrom_ISO8601
----------------------- ----------------------- ------------------------
2006-04-25T15:50:59.997 2006-04-25 15:50:59.997 2006-04-25 15:50:59.997
(1 row(s) affected)
H.Korzystając z przycisku KONWERTUJ dane binarne i znaków
Następujące przykłady przedstawiają wyniki konwersji danych binarnych oraz znaków przy użyciu różnych stylów.
--Convert the binary value 0x4E616d65 to a character value.
SELECT CONVERT(char(8), 0x4E616d65, 0) AS 'Style 0, binary to character'
Oto zestaw wyników.
Style 0, binary to character
----------------------------
Name
(1 row(s) affected)
--The following example shows how Style 1 can force the result
--to be truncated. The truncation is caused by
--including the characters 0x in the result.
SELECT CONVERT(char(8), 0x4E616d65, 1) AS 'Style 1, binary to character'
Oto zestaw wyników.
Style 1, binary to character
------------------------------
0x4E616D
(1 row(s) affected)
--The following example shows that Style 2 does not truncate the
--result because the characters 0x are not included in
--the result.
SELECT CONVERT(char(8), 0x4E616d65, 2) AS 'Style 2, binary to character'
Oto zestaw wyników.
Style 2, binary to character
------------------------------
4E616D65
(1 row(s) affected)
--Convert the character value 'Name' to a binary value.
SELECT CONVERT(binary(8), 'Name', 0) AS 'Style 0, character to binary'
Oto zestaw wyników.
Style 0, character to binary
----------------------------------
0x4E616D6500000000
(1 row(s) affected)
SELECT CONVERT(binary(4), '0x4E616D65', 1) AS 'Style 1, character to binary'
Oto zestaw wyników.
Style 1, character to binary
----------------------------------
0x4E616D65
(1 row(s) affected)
SELECT CONVERT(binary(4), '4E616D65', 2) AS 'Style 2, character to binary'
Oto zestaw wyników.
Style 2, character to binary
----------------------------------
0x4E616D65
(1 row(s) affected)
Zobacz także