gpt4 book ai didi

sql - PostgreSQL - 使用 case 语句测试整数时返回字符串

转载 作者:行者123 更新时间:2023-11-29 12:41:58 25 4
gpt4 key购买 nike

当从表中选择一些数据时,我想使用 CASE 语句在空值的情况下返回“n/a”。

这是我正在查看的表格的简化但具有代表性的版本:

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 吗?

最佳答案

要么使用NULL:

SELECT CASE
WHEN paid_cents IS NULL THEN NULL
ELSE paid_cents / 100
END AS "dollar amount"
FROM test

或将两者都转换为字符串:

SELECT CASE
WHEN paid_cents IS NULL THEN 'n/a'
ELSE (paid_cents / 100)::text
END AS "dollar amount"
FROM test

关于sql - PostgreSQL - 使用 case 语句测试整数时返回字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45677159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com