Вопрос

В Informix, как я могу привести тип char (8) к типу money , чтобы я мог сравнить его с другим money тип?

Использование " tblAid.amt :: money as aid_amt " не работал. Использование " (tblAid.amt * 1) AS aid_amt " не сработало.

Это было полезно?

Решение

попробуйте это - >

select (disb_amt::NUMERIC) disb_amt from tmp_kygrants;

Вы можете сравнить суммы в числовом выражении.

Другие советы

Первый вопрос: почему вы не храните числовое значение в числовом столбце? Это сделает остальную часть вашего вопроса тоо. Это также означает, что ваша система будет работать лучше. Когда вам нужно сохранить значения данных, используйте очевидный тип; не используйте строковый тип, если данные не являются строкой.

Как уже отмечалось, вы можете использовать нестандартную нотацию Informix:

SELECT some_column::MONEY FROM WhereEver;

Вы также можете быть более осторожными в отношении типа приведения - например, используя MONEY (8,2). Вы также можете использовать стандартную запись:

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

Предполагается, что вы используете IDS 9.x или более поздней версии - старые продукты вообще не поддерживают приведение типов. Тем не менее, в целом, Informix довольно хорош в автоматическом преобразовании (например, преобразование чисел в строки). Однако строки сравниваются лексикографически, а не численно, поэтому CAST, вероятно, более разумен в этом контексте, но избегать необходимости приведения с использованием правильного типа в первую очередь еще мудрее.

'Это было давно, так как я поиграл с Informix, и у меня нет под рукой работающего экземпляра. Однако есть две вещи, которые могут вызвать проблемы:

1) так как это char (8), он может содержать значения, которые не могут быть преобразованы в числовые без небольшого количества «очистки». Например. & Quot; аЬс & Quot ;. Или " 1 234 567,00 " ;.
2) Конечные пробелы. (символ в отличие от varchar).

Какую ошибку Informix вы получаете при явном приведении (:: money)?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top