将CAST空别名从PostgreSQL中的2 SQL联合整数

时间:2018-11-22 08:40:12

标签: postgresql

我有一个可以在MySQL中正常运行的SQL。但是由于要求我将数据库更改为PostgreSQL,因此SQL无法正常运行。这是因为数据类型。让我们看一个例子:

SELECT A, B, C FROM tbl_first
  UNION ALL
SELECT D, ' ', F FROM tbl_second

让我们说B列的数据类型为Integer。当我在PostgreSQL上运行时,通知说"invalid input syntax for integer: LINE 3: ' ',"。也许我的猜测是正确的,这是由于' '列的定义。

我总是使用CAST(COLUMN AS INTEGER)方法将字符串或字符数据类型转换为Integer的列。但就我而言,它总是给我一个错误。

如何最好地解决此问题?谢谢。

1 个答案:

答案 0 :(得分:1)

您需要将B列转换为文本:

SELECT A, B::text, C FROM tbl_first
UNION ALL
SELECT D, ' ', F FROM tbl_second

在联合查询中,位于同一位置的所有列通常需要具有相同的类型。