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.

È stato utile?

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)?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top