我试着用发票号连接两个表中的数据,
LOC NOT NULL VARCHAR2(40)
INV_ORG NUMBER就像这样,效果很好:
SELECT oh.inv_org,e.loc
FROM headers oh, sites e
WHERE
AND e.location = TO_CHAR(oh.inv_org);但是,当我试图将字符转换为数字时,我得到ORA-01722:无效数字。
SELECT oh.inv_org, e.loc
FROM headers oh, sites e
WHERE
AND to_number(e.loc) = oh.inv_org;错误报告 ORA-01722:无效号码
我不知道为什么,因为在select中,转换也很好
INV_ORG 110992
LOC 110992
OH.INV_ORG-TO_NUMBER(E.LOC) 0发布于 2018-08-20 06:59:57
检查您的数据,有可能在e.loc中有一个值不能转换为数字。
顺便说一下,下面的select给了ORA-01722:
SELECT to_number('test') FROM dual
发布于 2018-08-20 07:04:28
如果这不起作用:
SELECT oh.inv_org, e.loc
FROM headers oh, sites e
WHERE
AND to_number(e.loc) = oh.inv_org;这意味着有些e.loc值不能转换为数字(例如字母)。因此,您应该使用有效的查询(因为将oh.inv_org转换为字符串没有问题):
SELECT oh.inv_org,e.loc
FROM headers oh, sites e
WHERE
AND e.location = TO_CHAR(oh.inv_org);然而,整个故事意味着当前的数据模型没有被正确地设置。您要加入的列可能需要在某种外键约束中使用,即
如果是这样的话,你现在就不会有问题了。
哦,是的--而且,尝试切换到ANSI连接,不会解决你当前的问题,但会在未来得到回报。
SELECT oh.inv_org,e.loc
FROM headers oh join sites e on e.location = to_char(oh.inv_org);发布于 2018-08-20 06:54:31
尝试如下: to_number函数接受两个参数
SELECT oh.inv_org, e.loc
FROM headers oh, sites e
WHERE
to_number(e.loc,'9999999') = oh.inv_org;https://stackoverflow.com/questions/51925307
复制相似问题