我正在为 IBM i V6R1 使用 DB2,并且我正在尝试将一个字符串值转换为一个数字,该字符串有时具有数字的有效表示。我想出的是:
select onorno, onivrf, coalesce(cast(substr(onivrf,1,5) as numeric),99999) as fred
from oinvol
有时 ONIVRF 字段有像“00111-11”这样的数据,有时它有像“FREIGHT”这样的数据。
该文档使我相信对于这样的数据:
ONORNO ONIVRF
12 11010-11
13 FREIGHT
14 00125-22
我应该得到这样的输出:
ONORNO ONIVRF FRED
12 11010-11 11010
13 FREIGHT 99999
14 00125-22 125
相反,我得到了这个:
ONORNO ONIVRF FRED
12 11010-11 11010
13 FREIGHT NULL
14 00125-22 125
(如果我跳过coalesce()
并只使用Cast(substr(onivrf(1,5) as numeric)
,我会得到完全相同的结果。)
我在这里做错了什么?