在Postgres中,当我尝试合并两个表时,其中一个表有一个包含double precision
数据类型的列(Amount
),而另一个表没有匹配的列,并且我希望从那个表中获取的记录只是在Amount
字段中具有NULL
值。
错误信息:
"union types text and double precision cannot be matched 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
我相信这个解决方案只是一个简单的类型转换问题,但是在搜索中找不到任何相关内容。我该如何在PostgreSQL中执行类似于
NULL::DOUBLE
的操作?编辑::后人
@klin的接受答案以及@a_horse_with_no_name的评论指向了一个“历史性”PostgreSQL类型转换表达式
::
,其中语法是等效的:CAST ( expression AS type )
expression::type
这里是PostgreSQL数据类型的列表。
NULL::INT
,并且它通过了“气味测试”(一次)。您有这种类型转换的用法或文档链接吗?提前感谢。 - wahwahwah