从表中选择一些数据时,我希望使用CASE
语句在空值的情况下返回“n/a”。PostgreSQL - 在用case语句测试整数时返回字符串
这是表的简化,但代表性的版本我看:
CREATE TABLE test (
id INTEGER NOT NULL,
paid_cents INTEGER NULL DEFAULT NULL,
PRIMARY KEY (id)
);
INSERT INTO test VALUES (1, 100);
INSERT INTO test VALUES (2, NULL);
INSERT INTO test VALUES (3, 0);
我希望能够使用下面的查询:
SELECT CASE
WHEN paid_cents IS NULL THEN 'n/a'
ELSE paid_cents/100
END AS "dollar amount"
FROM test
这A fiddle表现完全如我所料。但是想这对我的真正的数据库(PostgreSQL的9.4)导致错误:
ERROR: invalid input syntax for integer: "n/a"
LINE 2: WHEN paid_cents IS NULL THEN 'n/a'
似乎Postgres的期待一个整数测试一个整数(和不断变化的“N/A”到一些确实时要返回的确工作)。我猜我需要CAST
某处?
postgres将NULL视为未知 - 也许'什么时候paid_cents IS NULL THEN NULL'将服务?..因为你不能在列中混合datatyopes - 它是以太int或字符 –