Domanda
In Informix, come posso lanciare un tipo char (8)
in un tipo money
, in modo da poterlo confrontare con un altro money
digitare?
Utilizzo di " tblAid.amt :: money as aid_amt
" non ha funzionato.
Utilizzando " (tblAid.amt * 1) AS aid_amt
" non ha funzionato.
Soluzione
prova questo - >
select (disb_amt::NUMERIC) disb_amt from tmp_kygrants;
Potresti essere in grado di confrontare gli importi come numerici.
Altri suggerimenti
Prima domanda: perché mai non stai memorizzando un valore numerico in una colonna numerica? Ciò renderebbe discutibile il resto della tua domanda. Significherebbe anche che il tuo sistema funzionerà meglio. Quando è necessario archiviare i valori dei dati, utilizzare il tipo ovvio; non utilizzare un tipo di stringa a meno che i dati non siano una stringa.
Come già notato, è possibile utilizzare la notazione di cast Informix non standard:
SELECT some_column::MONEY FROM WhereEver;
Puoi anche stare più attento al tipo di cast, usando ad esempio DENARO (8,2). Puoi anche usare la notazione standard:
SELECT CAST(some_column AS MONEY(8,2)) FROM WhereEver;
Ciò presuppone che tu stia utilizzando IDS 9.xo versioni successive - i prodotti più vecchi non supportano affatto i cast. Tuttavia, in generale, Informix è abbastanza bravo a fare conversioni automaticamente (ad esempio, convertire i numeri in stringhe). Tuttavia, le stringhe vengono confrontate lessicograficamente e non numericamente, quindi un CAST è probabilmente più saggio in questo contesto - ma evitare la necessità di un cast utilizzando il tipo corretto in primo luogo è ancora più saggio.
È passato un po 'di tempo da quando ho giocato con informix e al momento non ho un'istanza in esecuzione. Tuttavia, ci sono due cose che possono causare un problema qui:
1) poiché è un carattere (8) può contenere valori che non possono essere convertiti in numerici senza un po 'di "pulizia". Per esempio. & Quot; abc " ;. O "1.234.567,00" 2) Spazi finali. (carattere invece di varchar).
Quale errore informix ricevi sul tuo cast esplicito (:: money)?