Avatar billede andersjo Nybegynder
04. oktober 2007 - 10:14 Der er 5 kommentarer og
1 løsning

Like numbers

Jeg ønsker å lage et uttrykk som finner alle records hvor en verdi starter med en gitt tekst etterfulgt av kun tall.

@prefix='test'

SELECT count(*) FROM table WHERE value like @prefix+'[ett eller flere tall]'

Er dette mulig?

//andersjo
Avatar billede terry Ekspert
04. oktober 2007 - 10:25 #1
Avatar billede terry Ekspert
04. oktober 2007 - 10:26 #2
Soory, dont think that was of much use
Avatar billede terry Ekspert
04. oktober 2007 - 10:27 #3
Avatar billede fennec Nybegynder
04. oktober 2007 - 10:38 #4
Det tror jeg desværre ikke kan lade sig gøre. MS SQL har ikke implementeret en fuld udgave af Regular Expression.

Denne: SELECT * FROM MinTest WHERE test LIKE 'aa[0-9]'
vil f.eks finde alle 'aa1', 'aa2', 'aa3' osv men ikke 'aa11'

For at gøre det med regexp skal den se sådan ud:
SELECT * FROM MinTest WHERE test LIKE 'aa[0-9]+'

Men der opfatter MS SQL + tegnet som et ganske almindelig '+' og finder derfor:
'aa1+', 'aa2+' men ikke 'aa12'

Det kan være de har fået det implementeret i 2005 udgaven, men den har jeg desværre ikke selv installeret.
Avatar billede andersjo Nybegynder
04. oktober 2007 - 11:35 #5
Fikk det til på følgende måte:

SELECT count(*) FROM table
WHERE value like @Prefix+'%'
and ISNUMERIC(SUBSTRING(value,LEN(@Prefix)+1,LEN(value)-LEN(@Prefix)+1))=1

ISNUMERIC-delen sjekker om det kun er tall i siste del av verdien.
Avatar billede fennec Nybegynder
04. oktober 2007 - 11:45 #6
ahh smart løsning der :o)
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