Pergunta
Em Informix, como posso lançar um tipo char(8)
em um tipo money
, para que eu possa compará-lo com outro tipo money
?
Usando o "tblAid.amt::money as aid_amt
" não funcionou.
Usando "(tblAid.amt * 1) AS aid_amt
" não trabalho.
Solução
tentar isso ->
select (disb_amt::NUMERIC) disb_amt from tmp_kygrants;
Você pode ser capaz de comparar os valores como numérico.
Outras dicas
Primeira pergunta - por que diabos você não armazenar um valor numérico em uma coluna numérica? Isto faria com que o resto de sua discutível questão. Também significaria que o sistema terá um desempenho melhor. Quando você precisa para valores de dados armazenar, usar o tipo óbvio; não usar um tipo de cadeia, a menos que os dados é uma string.
Como já mencionado, você pode usar a notação não-padrão elenco Informix:
SELECT some_column::MONEY FROM WhereEver;
Você também pode ter mais cuidado com o tipo elenco - usando o dinheiro (8,2), por exemplo. Você também pode usar a notação padrão:
SELECT CAST(some_column AS MONEY(8,2)) FROM WhereEver;
Isso pressupõe que você está usando IDS 9.x ou posterior - produtos mais antigos não suportam moldes em tudo. No entanto, em geral, Informix é bom bastante sobre fazer conversões automaticamente (por exemplo, a conversão de números para strings). No entanto, as cadeias são comparadas lexicographically e não numericamente, então CAST é provavelmente mais sábio neste contexto -. Mas evitando a necessidade de um elenco usando o tipo correto em primeiro lugar é mais sábio ainda
'Tis sido um tempo desde que eu brinquei com o Informix e eu não tenho uma instância em execução calhar no momento. No entanto, há duas coisas que podem causar um problema aqui:
1) uma vez que é um carvão animal (8) que pode conter valores que não podem ser fundidas para numérico sem um pouco de 'limpeza'. Por exemplo. "abc". Ou "1,234,567.00".
2) À direita de espaços. (Char em oposição a VARCHAR).
O erro informix você recebe em seu elenco explícita (:: dinheiro)?