Microsoft SQL Server
Konvertera datatyper
Sök…
PRÖV PARSE
Den konverterar strängdatatyp till måldatatyp (Datum eller numerisk).
Till exempel är källdata strängtyp och vi måste dölja till datumtyp. Om konverteringsförsöket misslyckas returnerar det NULL-värde.
Syntax: TRY_PARSE (string_value AS data_type [USING culture])
String_value - Det här argumentet är källvärdet av typen NVARCHAR (4000).
Data_type - Detta argument är måldatatyp antingen datum eller numeriskt.
Kultur - Det är ett valfritt argument som hjälper till att konvertera värdet till i kulturformat. Anta att du vill visa datumet på franska, då måste du skicka kulturtyp som 'Fr-FR'. Om du inte skickar något giltigt kulturnamn kommer PARSE att ta upp ett fel.
DECLARE @fakeDate AS varchar(10);
DECLARE @realDate AS VARCHAR(10);
SET @fakeDate = 'iamnotadate';
SET @realDate = '13/09/2015';
SELECT TRY_PARSE(@fakeDate AS DATE); --NULL as the parsing fails
SELECT TRY_PARSE(@realDate AS DATE); -- NULL due to type mismatch
SELECT TRY_PARSE(@realDate AS DATE USING 'Fr-FR'); -- 2015-09-13
PRÖV KONVERT
Den konverterar värdet till specificerad datatyp och om konverteringen misslyckas returnerar den NULL. Till exempel källvärdet i strängformat och vi behöver datum / heltalformat. Då kommer detta att hjälpa oss att uppnå detsamma.
Syntax: TRY_CONVERT (data_type [(längd)], uttryck [, stil])
TRY_CONVERT () returnerar ett värde som kastas till den angivna datatypen om castet lyckas; annars returnerar noll.
Data_type - Datatypen som konverteras till. Här är längd en valfri parameter som hjälper till att få resultat i specificerad längd.
Uttryck - Värdet som ska konverteras
Style - Det är en valfri parameter som bestämmer formatering. Anta att du vill ha datumformat som "18 maj 2013", då behöver du passform som 111.
DECLARE @sampletext AS VARCHAR(10);
SET @sampletext = '123456';
DECLARE @ realDate AS VARCHAR(10);
SET @realDate = '13/09/2015’;
SELECT TRY_CONVERT(INT, @sampletext); -- 123456
SELECT TRY_CONVERT(DATETIME, @sampletext); -- NULL
SELECT TRY_CONVERT(DATETIME, @realDate, 111); -- Sep, 13 2015
PRÖV KAST
Den konverterar värdet till specificerad datatyp och om konverteringen misslyckas returnerar den NULL. Till exempel källvärde i strängformat och vi behöver det i dubbel- / heltalformat. Då kommer detta att hjälpa oss att uppnå det.
Syntax: TRY_CAST (uttryck AS data_type [(längd)]
TRY_CAST () returnerar ett värde som kastas till den angivna datatypen om castet lyckas; annars returnerar noll.
Uttryck - Källvärdet som kommer att gå till cast.
Data_type - Måldatatypen som källvärdet kommer att avge.
Längd - Det är en valfri parameter som anger längden på måldatatypen.
DECLARE @sampletext AS VARCHAR(10);
SET @sampletext = '123456';
SELECT TRY_CAST(@sampletext AS INT); -- 123456
SELECT TRY_CAST(@sampletext AS DATE); -- NULL
Kasta
Cast () -funktionen används för att konvertera en datatypvariabel eller data från en datatyp till en annan datatyp.
Syntax
CAST ([Expression] AS Datatype)
Datatypen du kastar ett uttryck till är måltypen. Datatypen för uttrycket som du skickar från är källtypen.
DECLARE @A varchar(2)
DECLARE @B varchar(2)
set @A='25a'
set @B='15'
Select CAST(@A as int) + CAST(@B as int) as Result
--'25a' is casted to 25 (string to int)
--'15' is casted to 15 (string to int)
--Result
--40
DECLARE @C varchar(2) = 'a'
select CAST(@C as int) as Result
--Result
--Conversion failed when converting the varchar value 'a' to data type int.
Kaster fel om det misslyckades
Konvertera
När du konverterar uttryck från en typ till en annan kommer det i många fall att finnas ett behov inom en lagrad procedur eller annan rutin för att konvertera data från en datattyp till en varchar-typ. Konverteringsfunktionen används för sådana saker. CONVERT () -funktionen kan användas för att visa datum / tid-data i olika format. Syntax
CONVERT (data_type (längd), uttryck, stil)
Style - formatvärden för konvertering av datetime eller smalldatetime till karaktärsdata. Lägg till 100 till ett stilvärde för att få ett fyra-platsår som inkluderar århundradet (åååå).
select convert(varchar(20),GETDATE(),108)
13:27:16