在做兩個select語句的union all的過程中,爆出了這個問題,這兩個語句單獨執行都能順利執行
於是可能問題在系統面對A語句時生成的 int,char字段,B語句生成的int,varchar2字段
那么問題就簡單了,將其轉化成相同數據類型的數據即可。
create table t_test1(id number, name varchar2(100)); create table t_test2(id number ,name nvarchar2(100)); -------------------- select t.* from T_TEST1 t; select t.* from T_TEST2 t; -------------------- insert into t_test1 values(1,'nameFromTest1'); insert into t_test2 values(2,'nameFromTest2'); --------------------union all查詢 select id, name from t_test1 union all select id, name from t_test2;
然可能工作中比較復雜,比如name字段是由若干內容拼成的,這樣系統就會自動判斷這個字段該屬於什么類型
解決辦法如下
---------------------解決辦法1 to_char to_nchar select id, name from t_test1 union all select id, to_char(name) from t_test2; ----------------- to_nchar cast translate...using 將varchar2轉為nvarchar2 ---------------------------------to_nchar select id, to_nchar(name) from t_test1 union all select id, name from t_test2; ----------------------------------cast select id, cast(name as nvarchar2(100)) from t_test1 union all select id, name from t_test2; ----------------------------------translate...using 2 nchar_cs select id, translate(name using nchar_cs) from t_test1 union all select id, name from t_test2; ----------------------------------translate...using 2 char_cs select id, name from t_test1 union all select id, translate(name using char_cs) from t_test2;
