UNION ALL,将 NULL 转换为双精度,Postgres

wah*_*wah 2 postgresql

在 postgres 中,当我尝试合并两个表时出现错误,其中一个表的列 ( Amount) 包含double precision数据类型,而另一个表没有匹配的列,我希望该表中的记录只是有NULL在该Amount领域。

错误:

“联合类型文本和双精度不能匹配 postgres”

伪代码:

SELECT * FROM (

SELECT
   t1.Amount AS 'amount',
   NULL::DATE AS 'date'
FROM Table1 AS t1
UNION ALL

SELECT
   /* next line is the issue */
   NULL AS 'amount',
   t2.Date AS 'date'
FROM Table2 AS t2

) AS FOO
Run Code Online (Sandbox Code Playgroud)

我相当肯定这个解决方案是一个简单的铸造问题,但从搜索中找不到任何东西。我如何NULL::DOUBLE在 postgres 中执行等效操作?

编辑::后代

来自@klin 和@a_horse_with_no_name 的评论中接受的答案指向“历史”postgres 转换表达式::,其中语法等效

CAST ( expression AS type )  
expression::type
Run Code Online (Sandbox Code Playgroud)

而且,这里是postgres 数据类型的列表。

kli*_*lin 5

在 Postgres 中,该类型double precision也称为float8或 简称float。使用其中之一。

select null::double precision, null::float;
Run Code Online (Sandbox Code Playgroud)