Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Query per estrazione valori separati da una virgola da un campo

    Ciao a tutti,
    ho un problema con un DB che non ho realizzato io (e che non posso modificare) ma che devo andare ad interrogare.

    In una taballa di questo DB c'è un campo che contiene diversi valori separati da una virgola.
    ad esempio

    ID campo1
    1 pippo 1, pluto, paperino
    2 clarabella, minni 2, pippo 1
    3 eta beta, minni 2
    4 paperino

    ecco, a me servirebbe tirare fuori un elenco così:

    pippo 1
    pluto
    paperino
    clarabella
    minni 2
    eta beta

    non mi interessa sapere a che id sono legati, ne altro, semplicemente quali sono le voci in gioco.

    grazie
    annaelle

  2. #2
    con quale db stai lavorando?

  3. #3
    Scusate è vero, non ho dato tutte le informzaioni, uso ACCESS e lavoro con ASP
    annaelle

  4. #4
    se ti interessa solo come output, puoi leggere il record così com'è e poi usare SPLIT

  5. #5
    infatti era l'alternativa... solo che devo mettere tutto in un array, verificare quali campi contengono più di un valore, splittarli e verificare che non siano già inseriti... in un caso inserirlo altrimenti passare al successivo

    ma che fessa, forse faccio prima a mettere tutti i primi vaolri dello split in una stringa e usare inStr per verificare se i valori successivi esistono ed eventualmente aggiungerli.
    Speravo ci fosse qualcosa da SQL che mi evitasse questi mille controlli.

    comunque grazie!
    annaelle

  6. #6
    ?????

    guarda che non hai bisogno di mille controlli


    codice:
    lista=Split(rs("colonna"),",")
    for i=0 to ubound(lista)
       response.write lista(i)
    next
    (davvero quattro righe di codice )

  7. #7
    si, hai ragione, però manca il controllo sui duplicati, devo giusto aggiungere quello e fare un ciclo visto che ho i valori dentro un array oppure posso fare uno split direttamente su tutto un array?

    grazie mille
    annaelle

  8. #8
    puoi provare a splittare e mettere via via dentro un dictionary, che dovrebbe fare già il controllo dei duplicati

  9. #9
    un filo macchinoso ma funziona...
    ho il risultato della mia select in una matrice che si chiama matriceTemi(0,k)

    codice:
    temiStringa = "" 
    ' passo dalla matrice all'array 	
    for k=0 to dimensioneTemi-1 		
       arrayTemi(k)=matriceTemi(0,k) 	
    next 	
    ' metto tutti i risultati in una stringa, ogni record è separato dalla virgola
    listaStr=Join(arrayTemi, ",") 	
    ' risplitto il tutto in un array, in questo modo ogni record che conteneva più di un valore viene splittato in record differenti
    listaArr=Split(listaStr,",") 
    ' veriico l'unicità delle voci mettendo il tutto in una stringa	
    for i=0 to ubound(listaArr) 	 	
       if InStr(temiStringa,listaArr(i))=0 then    			
           temiStringa= temiStringa & listaArr(i) & ", "    		
        end if 	
    next 	 	
    ' risplitto la strina e ho il mio array pulito
    temiArr=Split(temiStringa, ",")	     
    dimensioneTemiArr=ubound(temiArr)
    non ho mai utilizzato l'oggetto dictionary, adesso vado a vedermelo un po' per capire se può essermi d'aiuto

    grazie
    annaelle

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.