Oracle日期和时间转换

时间:2013-05-23 11:45:59

标签: oracle types union

我对下面的SELECT声明有疑问:

SELECT SO FROM ORDERS 
UNION ALL 
SELECT SO FROM QUOTES

当我运行查询时,我收到错误Fields must have same data types。我知道字段SO之间存在数据冲突。在Orders表中,它是NVARCHAR2(50),而Quotes表由Integer数据类型组成。是否有任何解决方法与上述语句中显示的字段SO建立联合,而不更改字段SO的数据类型?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

就像下面显示的查询一样

select 1 from dual    --integer datatype
union all
select '1' from dual  --varchar2 datatype

为了使这项工作,您需要将INTEGER DATATYPE更改为VARCHAR

select to_char(1) from dual  --change the datatype to CHAR in Quotes table 
union all
select '1' from dual         -- this remain unchanged

您的最终查询将类似于

SELECT SO FROM ORDERS
UNION ALL
SELECT TO_CHAR(SO) FROM QUOTES