在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可能更明智 - 但是首先使用正确类型避免使用强制转换的需求仍然更为明智.