300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Oracle关联查询-数据类型不一致问题 ORA-01722: 无效数字

Oracle关联查询-数据类型不一致问题 ORA-01722: 无效数字

时间:2020-02-27 10:08:35

相关推荐

Oracle关联查询-数据类型不一致问题 ORA-01722: 无效数字

一、存在表A和表B,都包含字段user_no,但数据类型不一致,如下:

create table A (

user_id varchar2(20),

user_no number(12,0),

xxx

);

create table B (

user_name varchar2(60),

user_no varchar2(20),

xxx

);

二、现有某项业务需要用到A.user_id和B.user_name,通过user_no来做关联查询,如下:

select A.user_id,B.user_name from A,B where A.user_no=B.user_no;

select A.user_id,B.user_name from A,B where A.user_no=B.user_no and A.user_no='1234567';

三、问题:

1.当A.user_no和B.user_no全部为数字类型时,以上脚本是没有问题的;

2.当B.user_no的某一个或多个值包含非数字字符时,该脚本会报:ORA-01722: 无效数字

四、原因:

深层次原因待后续分析。

五、反思:

1.最根本的,应该避免不同表同一字段的数据类型不一致;

2.关联查询时增加数据类型转换,如:select A.user_id,B.user_name from A,B where to_char(A.user_no)=B.user_no;

3.如果项目中已经存在这种情况,应该确保varchar2类型的字段不会包含非数字字符。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。