我有一个可以在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的列。但就我而言,它总是给我一个错误。
如何最好地解决此问题?谢谢。
答案 0 :(得分:1)
您需要将B
列转换为文本:
SELECT A, B::text, C FROM tbl_first
UNION ALL
SELECT D, ' ', F FROM tbl_second
在联合查询中,位于同一位置的所有列通常需要具有相同的类型。