我对下面的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
的数据类型?
非常感谢任何帮助。
答案 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