将数字转换为char并添加额外的char oracle时出错

时间:2017-08-17 01:38:25

标签: sql oracle oracle11g

我有两列,其中VAL_ID是varchar,id是数字。我试图将id转换为varchar并将其与VAL_ID进行比较(id可以是123,val可以是123或D123)所以我必须做两个条件,但是我收到错误:

ORA-01722:无效的号码 01722. 00000 - “无效号码” *原因:指定的号码无效。 *操作:指定有效数字。

我的选择:

select  TO_NUMBER(VAL_ID) per_val, id p_val
from doc d inner join emp p
on p.VAL_ID = TO_CHAR(d.id) 
or p.VAL_ID = CONCAT('D',TO_CHAR(d.id))

1 个答案:

答案 0 :(得分:0)

问题出在select。为什么要将以D开头的内容转换为数字?你可以这样做:

select p.VAL_ID as per_val, d.id as p_val
from doc d inner join
     emp p
     on p.VAL_ID = TO_CHAR(d.id) or
        p.VAL_ID = CONCAT('D', TO_CHAR(d.id));

如果您需要数字组件,请使用d.id