AS400 WRKQRY并置十进制

时间:2018-09-28 16:59:04

标签: ibm-midrange

在WRKQRY内>定义结果字段在尝试合并两个字段(其中一个字段包含小数)时抛出错误。

如何获取带小数点的值进行连接?

DSICF = .400

DSIUM = MG

Field       Expression                         Column Heading       
DOSE        DSICF||DSIUM                       DOSE

串联运算符不允许使用值。

进行研究后,IBM声明表达式中的任何字段是否为双字节字符集(DBCS)图形,表达式中的所有字段或常量都必须为DBCS图形。

仍在研究中。

2 个答案:

答案 0 :(得分:1)

DIGITS()似乎是Query for i支持数字到字符转换的唯一运算符。我怀疑它不会给您想要的东西...

CHAR()和VARCHAR()用于日期,时间和时间戳记...

将不受支持且过时的Query for i产品移至基于SQL的解决方案,将为您提供最佳服务。

IBM希望您使用WebQuery ...

但是查询管理器(STRQM)是5250工具,它甚至可以读取和执行Query / 400查询。在提示模式下,它类似于Query / 400,但是具有SQL的所有功能。

答案 1 :(得分:1)

带有小数的数字字段必须首先转换为字符串。但是,您将在此转换中丢失小数。为了加回小数,必须解析字符串并手动连接小数。

示例

DCIFC = 0.400
DCIUM = MG

Field           Expression
CNVRTUNIT        digits(DCIFC)  //Converts .400 to 0000000400 

NEWUNIT         substr(CNVRTUNIT,7,1)||'.'||substr(CNVRTUNIT,8,2)||'/'||DCIUM

-----
NEWUNIT now equals 0.400/MG