Oracle關聯查詢-數據類型不一致問題 ORA-01722: 無效數字

1、存在表A和表B,都包含字段user_no,但數據類型不一致,以下:table

create table A (select

  user_id varchar2(20),數據類型

  user_no number(12,0),數據

  xxx腳本

);項目

create table B (查詢

  user_name varchar2(60),tab

  user_no varchar2(20),類型轉換

  xxx字符

);

 

2、現有某項業務須要用到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';

 

3、問題:

1.當A.user_no和B.user_no所有爲數字類型時,以上腳本是沒有問題的;

2.當B.user_no的某一個或多個值包含非數字字符時,該腳本會報:ORA-01722: 無效數字

 

4、緣由:

深層次緣由待後續分析。

 

5、反思:

1.最根本的,應該避免不一樣表同一字段的數據類型不一致;

2.關聯查詢時增長數據類型轉換,如:select A.user_id,B.user_name from A,B where to_char(A.user_no)=B.user_no;

3.若是項目中已經存在這種狀況,應該確保varchar2類型的字段不會包含非數字字符。

相關文章
相關標籤/搜索