在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的列表。
答案 0 :(得分:1)
在Postgres中,double precision
类型也称为float8
或简称为float
。使用其中一个。
select null::double precision, null::float;