從表中選擇一些數據時,我希望使用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或字符 –