Jeg har en tabel (Tabel1) med 2 felter "Tal" og "Bogstav", det jeg gerne vil have ud af det er én streng der indeholder "Tal" formatterede, sammenlagt med "Bogstav".
Fx skal "Tal" = 1, og "Bogstav" = D give følgende: "001D"
"Tal" skal altid have 3 cifre, så 1 = 001, 10 = 010, 100 = 100.
Kan sagtens gøre det i koden men ville gerne vide hvordan det kan laves i et SQL-kald?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Jeg vil mene at du kan lave noget ala dette. Det er lavet i notepad uden adgang til en SQL :)
select CASE length(tal) WHEN 1 THEN '00' + CAST(tal as nvarchar(1)) + bogstav WHEN 2 THEN '0' + CAST(tal as nvarchar(2)) + bogstav WHEN 3 THEN tal + bogstav END
Følgende ser ud til delvis at virke :) Den kommer med fejlen at den ikke kan konvertere '001D' til en int.
SELECT CASE LEN(Tal) WHEN 1 THEN '00' + CAST(Tal AS nvarchar(1)) + Bogstav WHEN 2 THEN '0' + CAST(Tal AS nvarchar(2)) + Bogstav WHEN 3 THEN Tal + Bogstav END AS Expr1 FROM Table1
Det er nok din case 3 der fejler, hvor du bare skriver Tal + Bogstav. Der vil den prøve at caste dit bogstav til et tal for at addere dem. Du bliver nødt til også her at caste dit tal til en varchar lige som i de to linjer ovenfor.
"select case"-løsningen virker helt sikkert! Dette er en anden måde at løse problemet på, ved hjælpe af funktionen Replicate:
declare @tal varchar(3) declare @bogstav char set @bogstav = 'D'
set @tal = Cast(1 as varchar(3)) select replicate('0', 3-len(@tal)) + @tal + @bogstav
set @tal = Cast(22 as varchar(3)) select replicate('0', 3-len(@tal)) + @tal + @bogstav
set @tal = Cast(333 as varchar(3)) select replicate('0', 3-len(@tal)) + @tal + @bogstav
/* fail: */ set @tal = Cast(5555 as varchar(3)) select replicate('0', 3-len(@tal)) + @tal + @bogstav
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.