我有两列,其中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))
答案 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
。