Avatar billede eksperten1 Nybegynder
08. januar 2004 - 21:47 Der er 18 kommentarer og
1 løsning

Hjælp til at konvertere varchar til int

Jeg har et felt 'pageno' som indeholder en sideangivelse.
I feltet kan der stå eks. et tal "1", men der kan også stå "22_A". Jeg vil gerne lave et udtræk hvor jeg konvertere indholdet i 'pageno' til en int. Så skal alt _XX jo fjernes, og til dette sidder jeg og roder med CHARINDEX og noget LEFT og REVERSE, men det går lidt op i hat op briller.

Er der en venlig sjæl som kan hjælpe mig, jeg er ved at være pænt desperat.

mvh Mark
Avatar billede Slettet bruger
08. januar 2004 - 21:58 #1
Er der altid _noget efter tallet?
Avatar billede eksperten1 Nybegynder
08. januar 2004 - 21:59 #2
Nej desværre, enten står der kun et tal, ellers står der eks '32_fy'
Avatar billede eksperten1 Nybegynder
08. januar 2004 - 22:03 #3
Puha, jeg ved godt at det ikke er pænt, men jeg fandt selv et svar. Evt. optimering modtages med kyshånd.

SELECT    pageno, REVERSE(RIGHT(REVERSE(pageno), LEN(pageno) - CHARINDEX(' ', REVERSE(pageno)))) AS Expr1
FROM        dbo.db_pages2
Avatar billede rbl Praktikant
08. januar 2004 - 22:09 #4
Prøv det her. jeg har ikke testet det.

Streng = "indholdet af pageno"
Streng2 = ""

for i=1 to streng.lenght
  if (Streng.chatAt(i) <= '9' and Streng.chatAt(i) >= '0') then
    Streng2 = streng & Streng.chatAt(i)
  end if
next
response.write(Streng2)
Avatar billede Slettet bruger
08. januar 2004 - 22:09 #5
Jeg har en anden variant her, ved ikke hvad der er bedst

select case  WHEN charindex('_',pageno) > 0 then
left(pageno,charindex('_',pageno) - 1)
else
pageno
end
Avatar billede Slettet bruger
08. januar 2004 - 22:25 #6
rbl>> Response.Write virker ikke i MS SQL :-)
Avatar billede rbl Praktikant
08. januar 2004 - 22:31 #7
nej, det var selvfølgelig ment EFTER du har lavet udtrækket.
Avatar billede Slettet bruger
08. januar 2004 - 22:32 #8
Nu var det ikke lige mig der havde stillet spørgsmålet.
Avatar billede eksperten1 Nybegynder
08. januar 2004 - 22:34 #9
Jeg brugte den sidste version og den spiller ihvertfald. KAN det lade sig gøre at den tager forbehold BÅDE for '_' samt ' ' ?
Avatar billede Slettet bruger
08. januar 2004 - 22:37 #10
Altså eks. '7_aa' og '7 aa' ?
Avatar billede eksperten1 Nybegynder
08. januar 2004 - 22:39 #11
ja
Avatar billede Slettet bruger
08. januar 2004 - 22:40 #12
Prøv dette det skulle virke
select case 
WHEN charindex('_',pageno) > 0 then left(pageno,charindex('_',pageno) - 1)
WHEN charindex(' ',pageno) > 0 then left(pageno,charindex('',pageno) - 1)
else
pageno
end
Avatar billede eksperten1 Nybegynder
08. januar 2004 - 22:46 #13
Det er altså bare perfekto :) Det spiller bare.

Tusinde tak, det var lige på grænsen til at jeg fil et nervesammenbrud.

Hilsen Mark
Avatar billede eksperten1 Nybegynder
08. januar 2004 - 22:46 #14
bertie, smider du et svar ?
Avatar billede Slettet bruger
08. januar 2004 - 22:47 #15
Jeps, godt du fik det til at virke, vi kan ikke have nogle nervesammenbrud her :-)
Avatar billede eksperten1 Nybegynder
08. januar 2004 - 22:53 #16
Du er dagens mand i skysovs :)
Avatar billede Slettet bruger
08. januar 2004 - 23:00 #17
Jeg takker...(dagens kvinde i skysovs :-)
Avatar billede eksperten1 Nybegynder
08. januar 2004 - 23:02 #18
:-O Ja dem er der ikke for mange af herinde.
Avatar billede Slettet bruger
08. januar 2004 - 23:08 #19
Næ det har du ret i.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester