Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Problema con DECODE e UPPER

    Ciao a tutti,
    ho un problema che non riesco a risolvere ...

    Praticamente ho una query come questa

    codice:
    SELECT
    DECODE(CC1,'PSW'),
    DECODE(CC2,'PSW')
    FROM CLIENTI
    WHERE
    DECODE(CC2,'PSW') LIKE 'E%'
    Il problema è che il risultato del DECODE nel WHERE mi serve in maiuscolo e non nella forma in cui si trova memorizzato.

    Ho provato con

    codice:
    UPPER(DECODE(CC2,'PSW')) LIKE 'E%'
    ma non è cambiato nulla.

    Logicamente mettendo UPPER nel DECODE, la funzione di decodifica non funziona ...

    Qualcuno sa come posso risolvere?

    Grazie!

  2. #2
    Ma non mancano degli argomenti alla decode?

  3. #3
    Che tipo di argomenti? Ho sempre utilizzato il DECODE passando il "campo" e la "chiave di criptazione" ... esistono altri parametri che si possono passare?

    Ho cercato effettivamente l'esistenza di altri parametri, ma non ho trovato nulla ... mi sai dire di più?

    Grazie!

  4. #4
    La decode è una sorta di If then else ossia:
    Decode(value ,search_value, result, default_value)

    Quando value è uguale a search_value ritorna result altrimenti default_value

    Esempio:
    SELECT DECODE(1, 1, 2, 3)
    FROM dual

    il risultato e 2

  5. #5
    Mi sfugge qualcosa ... ho sempre usato il DECODE convinto che passando come primo parametro il campo X, e la chiave Y ... mi restituiva X decodificato ... l'inverso di ENCODE per intenderci ...

  6. #6
    Utente di HTML.it L'avatar di Mashin
    Registrato dal
    Jul 2010
    Messaggi
    187
    La Decode funziona come IF/Then/Else su Oracle.

    Che DB stai utilizzando Web ?

    Ma di preciso che valoru di decode() vuoi che ti vengano restituiti nella tua query ?

  7. #7
    Sto utilizzando MySQL, scusatemi non l'avevo precisato

    Praticamente facciamo che il campo dopo essere stato decodificato assume il valore "messaggio di Prova" ... a me servirebbe che mi fosse restituito come "MESSAGGIO DI PROVA".

    Questo perché questa query viene richiamata da un campo di ricerca CLIENTI, quindi posso selezionare tutti quelli che iniziano per "M" ... ma in questo caso non mi escono quelli che iniziano per "m" ... quindi pensavo di trasformare tutto in maiuscolo per superare l'ostacolo.

  8. #8
    non conosco mysql ma hai provato l'Upper sul cc2 e non sul decode?
    Tipo:
    DECODE(UPPER(CC2),'PSW') LIKE 'E%'

  9. #9
    Utente di HTML.it L'avatar di Mashin
    Registrato dal
    Jul 2010
    Messaggi
    187
    Concettualmente mi pare giusta la soluzione UPPER(DECODE(CAMPO,CODIFICA)) LIKE ..

    Prima decodifichi e poi Rendi tutto maiuscolo.

    Potersti, a scopo di test, fare una select UPPER(DECODE(CAMPO,CODIFICA)) con un codice cliente che conosci e almeno vedi che valore restituisce.

  10. #10
    codice:
    UPPER(DECODE(CAMPO,CODIFICA)) LIKE ..
    Questa è la soluzione che ho provato prima di aprire la discussione sul forum, perché a livello concettuale mi sembrava l'unica soluzione.

    codice:
    DECODE(UPPER(CC2),'PSW') LIKE 'E%'
    Il problema di questa soluzione, che avevo provato, è che la codifica di "CASA" è diversa da quella di "casa" ... quindi quando prova a decodificare, mi restituisce qualcosa in arabo

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.