Avatar billede mattiw Nybegynder
11. juni 2005 - 15:00 Der er 2 kommentarer

Matches ved sql regexp

Hejsa

Jeg er igang med at lave noget statistik over nogle records i en database.

Jeg forsøger at tælle antallet af referrals fra forskellige domæner. Feltet 'referer' indeholder værdier såsom 'subdomain.domain.tld', 'domain.tld' osv osv.

Jeg prøver via regexp at gruppere de forskellige domæner. Problemet er bare at mysql returnerer 1 eller 0 afhængig af om møsntret passer eller ej.

SQL-sætningen:
select referer regexp '([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}', count(referer) from orders where (status = 130 or status = 122 or status = 103 or status = 102) group by referer regexp '([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}'

Spørgsmålet er så hvordan jeg kan returnere det 0'te match og ikke kun 1/0 ?
Avatar billede barklund Nybegynder
11. juni 2005 - 23:55 #1
Så vidt jeg ved, kan det slet ikke lade sig gøre. Du kan ikke lave nogen form for replace eller tilsvarende med regexp. Du kan kun teste, om en given streng tilhører et givent regulært sprog.

Men så vidt jeg kan se, vil du jo egentlig også bare gerne fjerne alt andet end det sidste domain.tld - det kan laves med simple streng-metoder (så vidt jeg lige kan regne ud). Er det korrekt opfattet?

--
Morten Barklund
Avatar billede barklund Nybegynder
14. juni 2005 - 23:31 #2
Noget du er kommet videre med?
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