在Oracle中将数字转换为字符串并添加字符
我正在尝试使用在Oracle中将数字转换为字符串并添加字符,oracle,Oracle,我正在尝试使用 CASE WHEN PackageNum = 2 THEN to_char(DespatchNum + 'B') WHEN PackageNum = 3 THEN to_char(DespatchNum + 'C') WHEN PackageNum = 4 THEN to_char(DespatchNum + 'D') WHEN PackageNum = 5 THEN to_char(DespatchNum + 'E')
CASE
WHEN PackageNum = 2 THEN to_char(DespatchNum + 'B')
WHEN PackageNum = 3 THEN to_char(DespatchNum + 'C')
WHEN PackageNum = 4 THEN to_char(DespatchNum + 'D')
WHEN PackageNum = 5 THEN to_char(DespatchNum + 'E')
ELSE to_char(DespatchNum)
以ShipmentReference结尾
然而,我得到的错误
ORA-01722:无效号码
172200000-“无效号码”
*原因:指定的数字无效。
*操作:指定一个有效的数字
DispatchNum是一个数字
例如,输出看起来像1234B
感谢您的帮助。正如@gsalem在评论中提到的,连接不正确,要将字符合并到您使用的字符串上,可以使用| | not+:
选择packagenum,
DispatchNum,
包装箱
当2时,则发送num | | B
当3时,则发送num | | C
当4时,则发送num | |'D'
当5时,则发送num | | E
ELSE TO_CHAR(DispatchNum)
以ShipmentReference结尾
从表_名称;
其中,对于样本数据:
CREATE TABLE_name(packagenum,dispatchnum)作为
从DUAL CONNECT BY LEVEL(按级别)中选择级别1234,您还可以将分解为_CHAR(DispatchNum)
,因为这在所有情况下都是常见的
大概是这样的:
with
tbl (packagenum, despatchnum) as (
select 2, 3002 from dual union all
select 5, 4122 from dual union all
select 7, 8320 from dual
)
select packagenum, despatchnum,
to_char(despatchnum) ||
case packagenum when 2 then 'B'
when 3 then 'C'
when 4 then 'D'
when 5 then 'E' end as shipmentreference
from tbl
;
PACKAGENUM DESPATCHNUM SHIPMENTREFERENCE
---------- ----------- -----------------
2 3002 3002B
5 4122 4122E
7 8320 8320
理想结果是什么?理想结果1234B要在Oracle中连接字符,请使用“| |”而不是“+”,如选择x | |“A”。。。如果x是数字,则使用_char(x)| |'A',您可以添加一种格式以使用逗号分隔符。。。。