Hop til teksten

IT FJERNUNDERVISNING
- IT kurser når Du har tid!

Funktioner til konvertering og formatering

Igen først en lille oversigt

FunktionBeskrivelse
CAST(felt AS datatype) Konverterer feltet til datatypen
CONVERT(datatype, felt, (evt. datoformat)) Konverterer feltet til datatypen,
men her med mulighed for at angive datoformatet
FORMAT(felt, format) Viser feltet i som angivet i formatet

Og vi har nok også brug for en oversigt over datatyper

 DatatypeBeskrivelse 
char(n)  Fast bredde tekst. Max 8.000 tegn 
varchar(n)  Variabel tekst. Max 8.000 tegn 
varchar(max)  Variabel tekst. Max. 1.073.741.824 tegn
text Variabel tekst. Max 2Gb tekst
nchar(n)  Fast bredde unicode tekst. Max 4.000 tegn 
nvarchar(v)  Variabel unicode tekst. Max 4.000 tegn
nvarchar(max)  Variabel unicode tekst. Max 536.870.912 tegn
ntext  Variabel unicode tekst. Max 2Gb tekst 
bit 0, 1 eller NULL 
binary(n)  Fast bredde binær streng. Max 8.000 bytes 
varbinary(n)  Variabel binær streng. Max 8.000 bytes 
varbinary(max)  Variabel binær streng. Max 2Gb data 
image  Variabel binær streng. Max 2Gb data  
tinyint  Heltal mellem 0 og 255 
smallint  Heltal mellem -32.768 og 32.767
int  Heltal mellem -2.147.483.648 og 2.147.483.647 
bigint  Heltal mellem -9.223.372.036.854.775.808 and 9.223.372.036.854.775.807 
decimal(p,s)  Tillader tal mellem -10^38 +1 to 10^38 –1.
p er antallet af ciffre i tallet - skal være mellem 1 og 38 (default er 18)
s er antallet af ciffre i tallet til højre for decialkommaet - skal være mellem 0 og p (default er 0)
numeric(p,s)  Som decimal(p,s) 
smallmoney  Beløb mellem -214.748,3648 og 214.748,3647 
money  Beløb mellem -922.337.203.685.477,5808 to 922.337.203.685.477,5807 
float(n)  Tal mellem -1,79E + 308 og 1,79E + 308. 
Brug float(24) for store tal og float(53) for meget store tal.
real  Tal mellem -3,40E + 38 og 3,40E + 38
datetime  Fra 1. januar 1753 til 31. december 9999 med en nøjagtighed på 3,33 millisekunder 
datetime2  Fra 1. januar 0001 til 31. december 9999 med en nøjagtighed på 100 nanosekunder 
smalldatetime  Fra 1. januar 1900 til 5. juni 2079 med en nøjagtighed på 1 minut 
date  Kun dato. Fra 1. januar 0001 til 31. december 9999 
time  Kun tid med nøjagtighed på 100 nanosekunder 
datetimeoffset  Som datetime2, men med tilføjelse af tidszone
timestamp  Gemmer et unikt nummer, der bliver opdateret hver gang en række bliver oprettet eller ændret.
Hver tabel kan kun have ét timestamp felt
sql_variant  Gemmer op til 8.000 bytes data af forskellig datatype - dog ikke text, ntext eller timestamp 
uniqueidentifier  Gemmer en unik identifier (GUID) 
xml  Bruges til XML formateret data. Max 2Gb 
cursor  Bruges til at gemme en markør, der bruges i database operationer 
table  Bruges til at gemme et resultatsæt til senere behandling 

Lidt eksempler

CAST og CONVERT minder rigtig meget om hinanden - vi kigger primært på CONVERT og tager et par eksempler

SELECT 
'Født: ' + CONVERT(varchar, [BirthDate]) as Fdag
FROM Employee

Prøv det og se, hvordan tekst og dato på magisk vis bliver lagt sammen.

Man kan så også skrive 

SELECT 
'Født: ' + CONVERT(varchar, [BirthDate], 105) as Fdag
FROM Employee

Prøv igen og se, at datoen nu bliver formateret, som vi gerne vil have det (tror jeg).

Det hemmelige nummer 105 har jeg fundet på siden her: http://msdn.microsoft.com/en-us/library/ms187928.aspx hvor du kan se andre interessante hemmelige numre.

FORMAT bruges til tal og datoer og det kan se sådan her ud:

SELECT 
FORMAT([BirthDate], 'dd-MM-yyyy') as Fdag,
FORMAT([VacationHours], '0.00 timer') as FerieTimer
FROM Employee

Se, hvad det giver. Nok ikke den store overraskelse...

Man kan også gøre sådan her

SELECT 
FORMAT([BirthDate], 'd', 'da-DK') as Fdag,
FORMAT([VacationHours], 'c', 'da-DK') as FerieTimer
FROM Employee

Prøv det...
Ja, det var ikke helt som forventet - 'd' står, som du nok har gættet for date og 'c' for currency - så ja, det giver ikke meget mening i denne sammenhæng...

Læs lidt mere om format her

http://technet.microsoft.com/en-us/library/hh213505.aspx

 

Når du har betalt for kurset får du adgang til øvelser til hver lektion. Og når du har fået godkendt din besvarelse får du desuden adgang til mine løsningsforslag med ekstra tips og trix.