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

时间:2017-01-26 00:36:23

标签: postgresql union

在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

我觉得这个解决方案是一个简单的投射问题,但无法从搜索中找到任何内容。如何在postgres中执行等效的NULL::DOUBLE

修改::后人

来自@klin的接受答案和@ a_horse_with_no_name的评论,该评论指向syntax is equivalent

的“历史”postgres演员表达::
CAST ( expression AS type )  
expression::type

并且,这是postgres data types的列表。

1 个答案:

答案 0 :(得分:1)

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

select null::double precision, null::float;