Pagina 1 di 6 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 51
  1. #1
    Utente di HTML.it L'avatar di Elena78
    Registrato dal
    Oct 2001
    Messaggi
    535

    SQL: estrazione con pulizia campi non null

    Ho questa select count:

    select count(parolasi1), count(parolasi2), count(parolasi3), count(parolasi4), count(parolasi5), count(parolasi6), count(parolasi7), count(parolasi8), count(parolasi9), count(parolasi10)
    from recall45


    se non che alcuni campi sono sporchi e contengono caratteri che non sono ne 0 ne null.

    Per pulire ciascun campo dovrei fare così:

    select parolasi1 from recall45 where parolasi1 is not null and ascii(rtrim(substr(parolasi1,1,1)))<>0

    solo che la mia select iniziale estrae più campi e non posso mettere come condizione where la pulitura del campo.

    Come fare?? :master:

    Thanks

  2. #2
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    sai che è un bel casino?

    i dati che a te serve recuperare di che tipo sono?

  3. #3
    Utente di HTML.it L'avatar di Elena78
    Registrato dal
    Oct 2001
    Messaggi
    535
    Originariamente inviato da darkblOOd
    sai che è un bel casino?

    i dati che a te serve recuperare di che tipo sono?

    devo fare un conteggio di quanti campi x ciscuno sono valorizzati. I campi sono di tipo CHAR

    lO SO CHE è UN BEL CASINO PORCACCIA

  4. #4
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    uhm..il fatto che siano char ti permette di usare le funzioni per le stringhe.

    Sto consultando la guida SQL per vedere se la count ti permette di fare un controllo sui campi da cosiderare...vediamo se trovo qualcosa

  5. #5
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    vedi se questa ti funziona correttamente, a me restituisce SOLO i campi valorizzati da caratteri (quindi scarta i Null e i blank)
    codice:
    select 
    count(case when rtrim(ltrim(parolasi1)) <> '' then 0 end) p1, 
    count(case when rtrim(ltrim(parolasi2)) <> '' then 0 end) p2,
    count(case when rtrim(ltrim(parolasi3)) <> '' then 0 end) p3,
    count(case when rtrim(ltrim(parolasi4)) <> '' then 0 end) p4
    from recall45
    ovviamente ho fatto la prova solo con 4 campi, basta aggiungere le altre righe ed i nomi e alias che ti servono

    fammi sapere

  6. #6
    Utente di HTML.it L'avatar di Elena78
    Registrato dal
    Oct 2001
    Messaggi
    535
    Originariamente inviato da darkblOOd
    vedi se questa ti funziona correttamente, a me restituisce SOLO i campi valorizzati da caratteri (quindi scarta i Null e i blank)
    codice:
    select 
    count(case when rtrim(ltrim(parolasi1)) <> '' then 0 end) p1, 
    count(case when rtrim(ltrim(parolasi2)) <> '' then 0 end) p2,
    count(case when rtrim(ltrim(parolasi3)) <> '' then 0 end) p3,
    count(case when rtrim(ltrim(parolasi4)) <> '' then 0 end) p4
    from recall45
    ovviamente ho fatto la prova solo con 4 campi, basta aggiungere le altre righe ed i nomi e alias che ti servono

    fammi sapere
    mi da errore come se avessi dimenticato una parentesi..
    ma le funzioni ltrim e rtrim da sole no riescono a pulire il campo.. devo proprio utilizzare queste ascii(rtrim(substr parolasi1,1,1)))<> 0 ho già provato

  7. #7
    Utente di HTML.it L'avatar di Elena78
    Registrato dal
    Oct 2001
    Messaggi
    535
    Nessuno ragazzi


    Aiutoooooooo

  8. #8
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    fammi capire, i campi che eventualmente sono sporchi devi escluderli dal conteggio?

    se si, prova con questo codice:
    codice:
    select
    count( case when ascii(rtrim(substr(parolasi1,1,1))) <> 0 then 0 end) c1,
    count( case when ascii(rtrim(substr(parolasi2,1,1))) <> 0 then 0 end) c2,
    count( case when ascii(rtrim(substr(parolasi3,1,1))) <> 0 then 0 end) c3,
    count( case when ascii(rtrim(substr(parolasi4,1,1))) <> 0 then 0 end) c4
    from recall45

  9. #9
    Utente di HTML.it L'avatar di Elena78
    Registrato dal
    Oct 2001
    Messaggi
    535
    Originariamente inviato da darkblOOd
    fammi capire, i campi che eventualmente sono sporchi devi escluderli dal conteggio?

    se si, prova con questo codice:
    codice:
    select
    count( case when ascii(rtrim(substr(parolasi1,1,1))) <> 0 then 0 end) c1,
    count( case when ascii(rtrim(substr(parolasi2,1,1))) <> 0 then 0 end) c2,
    count( case when ascii(rtrim(substr(parolasi3,1,1))) <> 0 then 0 end) c3,
    count( case when ascii(rtrim(substr(parolasi4,1,1))) <> 0 then 0 end) c4
    from recall45
    hai capito giusto.. ma penso che questa sintassi ad Oracle non piaccia.. mi si posiziona su when e dice " missing right parenthesis"

  10. #10
    Utente di HTML.it L'avatar di Elena78
    Registrato dal
    Oct 2001
    Messaggi
    535
    ho provato a cercare sul manuale oracle case when ma non l'ho trovato

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 © 2025 vBulletin Solutions, Inc. All rights reserved.