Avatar billede pitzen Nybegynder
09. april 2008 - 08:57 Der er 8 kommentarer og
1 løsning

Tæller antal værdier sepereret af kommaer

Hej!

Jeg skal bruge en metode til at tælle antallet af værdier i følgende formatering:


a,b,c,d = 4 værdier
a,b = 2 værdier
g = 1 værdi
z,y,x,g,h,g,f = 7 værdier


Kan det lade sig gøre uden brug af PHP?
Avatar billede pidgeot Nybegynder
09. april 2008 - 11:59 #1
Hvis dine værdier altid har en fast længde, kan du bruge (CHAR_LENGTH(felt)+1)/(værdilængde+1)...

...hvis de ikke har samme længde, og du kører 5.0 eller senere, kan du lave en stored procedure/function til formålet, hvor du så må tælle op ved at bruge LOCATE til at finde kommaerne (for så at lægge en oven i din total til slut, da den sidste værdi jo ikke afbrydes af et komma)...

...men ellers ville en normalisering være et godt valg, fordi du så bare kan bruge COUNT i en SELECT *-)
Avatar billede pitzen Nybegynder
09. april 2008 - 13:11 #2
Tak for svar.

De har ikke samme længde og jeg skal kun lave denne forespøgsel én gang, så jeg tror jeg går for nummer 2.

Men jeg har ikke helt kunne hitte ud af at lave en stored procedure. Min tabel ser såled ud:

valg | antal
a,b,c | x

Her skal jeg blot have sat antallet af værdier ind på x's plads.
Avatar billede pidgeot Nybegynder
09. april 2008 - 15:23 #3
Hvilken del af den stored procedure volder dig problemer?

Hvis det er hvad den i det hele taget skal gøre, så er her lige lidt pseudokode - kan ikke lige skrive en færdig SP nu:

For hver række:
  Nulstil tæller
  Gentag sålænge LOCATE finder et komma:
    Husk placering af senest fundne komma
    Læg 1 til en tæller
  Læg 1 til tælleren
  Gør noget med resultatet
Avatar billede arne_v Ekspert
09. april 2008 - 23:11 #4
Hvad med:

SELECT felt,LENGTH(felt)-LENGTH(REPLACE(felt,',',''))+1 FROM tabel

?
Avatar billede pitzen Nybegynder
10. april 2008 - 09:42 #5
Den var lige i skabet arne. Smider i begge et svar?

tak for hjælpen
Avatar billede pidgeot Nybegynder
10. april 2008 - 09:52 #6
Den går til Arne - det er alt andet lige en nemmere løsning *-)
Avatar billede sherlock Nybegynder
10. april 2008 - 10:00 #7
Jeg er sq lige ved at smide lidt extra point efter den :)
Nydeligt!!!
Avatar billede pitzen Nybegynder
10. april 2008 - 10:15 #8
Fair nok :)

Men tak anyway!
Avatar billede arne_v Ekspert
10. april 2008 - 13:52 #9
svar
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



IT-JOB