Question

Dans Informix, comment puis-je convertir un type char (8) en un type money , afin de pouvoir le comparer à un autre money type?

Utilisation de " tblAid.amt :: money as aid_amt " n'a pas marché. Utilisation de & <; code> (tblAid.amt * 1) AS aid_amt " n'a pas fonctionné.

Était-ce utile?

La solution

essayez ceci - >

select (disb_amt::NUMERIC) disb_amt from tmp_kygrants;

Vous pourrez peut-être comparer les montants sous forme numérique.

Autres conseils

Première question - pourquoi ne stockez-vous pas une valeur numérique dans une colonne numérique? Cela rendrait inutile le reste de votre question. Cela signifierait également que votre système fonctionnera mieux. Lorsque vous devez stocker des valeurs de données, utilisez le type évident. n'utilisez pas de type chaîne à moins que la donnée ne soit une chaîne.

Comme indiqué précédemment, vous pouvez utiliser la notation de conversion Informix non standard:

SELECT some_column::MONEY FROM WhereEver;

Vous pouvez également faire plus attention au type de casting - utilisez par exemple MONEY (8,2). Vous pouvez également utiliser la notation standard:

SELECT CAST(some_column AS MONEY(8,2)) FROM WhereEver;

Cela suppose que vous utilisez IDS 9.x ou une version ultérieure. Les produits plus anciens ne prennent pas en charge les conversions. Cependant, en général, Informix sait très bien faire des conversions automatiquement (par exemple, convertir des nombres en chaînes). Toutefois, les chaînes étant comparées lexicographiquement et non numériquement, un CAST est probablement plus sage dans ce contexte - mais il est encore plus sage d'éviter d'utiliser un transtypage en utilisant le type correct en premier lieu.

Cela fait un moment que je joue avec informix et je n'ai pas d'instance en cours d'exécution pour le moment. Cependant, il y a deux choses qui peuvent poser problème ici:

1) Puisqu'il s'agit d'un caractère (8), il peut contenir des valeurs qui ne peuvent pas être converties en numérique sans un peu de "nettoyage". Par exemple. "abc". Ou "1 234 567,00".
2) espaces de fuite. (caractère par opposition à varchar).

Quelle erreur informix obtenez-vous sur votre diffusion explicite (:: money)?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top