我具有由“联合”连接的两个选择语句。当执行该语句我有:

错误报告: SQL错误:ORA-01790:表达式必须具有相同的数据类型对应的表达 01790. 00000 - “表达式必须具有相同的数据类型对应的表述”

也许你可以给我如何诊断这个问题的指教?

有帮助吗?

解决方案 7

我在这个问题提到我想对如何解决我的问题的建议。 我所做的是在每个select语句一次启用一个栏,发现我有错配在我的SQL UNION的最后一个栏。非常感谢参与并帮助我,但我知道我有类型不匹配,有什么我不知道的是如何解决。

其他提示

不看你的SQL,我猜你是UNION'ed具有不同数据类型的列。

下面就是找到:

<强> ORA-01790:表达式必须具有相同的数据类型相应的表达

<强>原因::一种选择列表项对应于与在相同组表达的另一个查询不同的数据类型的选择列表项

行动:查看所有相应的SELECT列表项具有相同的数据类型。使用TO_NUMBER,TO_CHAR和TO_DATE函数做明确的数据转换。

我还没有看到你的查询,但我猜测,一个选择在你的工会没有选择相同的列等。

该错误是告诉你,你用不同的数据类型的工会-ING列。有Oracle函数将一种类型转换为另一种(例如“TO_CHAR”),你必须将数据类型转换为通用格式,或至少相互转化。如果您发布的实际查询/类型。我希望能够更加specifc。

显然对于海报的问题解决了一半以上十年前,但是我想指出任何人在寻找帮助阅读这篇文章所选择的属性的顺序(列)必须从一个被联合声明的匹配下一个。这是不够的,只是有名称和数据类型匹配,虽然这在一定意义上的根本原因。但由于联盟的语句在Oracle中的处理方式,有可能得到ORA-01790错误是由于列的顺序而已。

不匹配

在我的情况下,我有一个查询与UNION ALL 2所选择的。一个选择了一个名为“generic_column_name”作为选择的25条列,其他选择有同样的列命名非常相同的数据类型的“generic_column_name”(我测试通过硬编码和几种方法也使用强制数据类型转换)。然而,第二选择曾在第19位这个项目,所以都从那里列上所抵消,这引发了ORA-01790错误。

您需要确保在你的工会相应的列具有相同的数据类型。最简单的方法是将注释列逐一缩小到柱上,然后使用明确的类型转换函数在它们中的一个,使类型匹配。

您试图执行SELECT语句(可能是一个UNION或UNION ALL),和所有的查询不包含在列结果匹配的数据类型。

Techonthenet - ORA-01790

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top