postgresql 我的CASE有什么问题?(类型...无法匹配)

hmtdttj4  于 2024-01-07  发布在  PostgreSQL
关注(0)|答案(5)|浏览(223)

第一个月
当运行此代码时,我一直得到这个错误:错误:CASE类型字符变化和整数无法匹配
你可能会认为这不会引起问题,因为我在查询中创建了一个新列。我还想指出,我使用的是旧版本的PostgreSQL,如果这有帮助的话。

4ngedf3f

4ngedf3f1#

CASE WHEN table1.text IS NULL THEN table2.numbers::text ELSE table1.text END AS newcolumn

字符串

jv2fixgn

jv2fixgn2#

问题是您试图将table1.text和table2.numbers添加到单个列中。这两列是两种不同的数据类型。请尝试以下操作

CASE WHEN table1.text IS NULL THEN CAST(table2.numbers AS VARCHAR(50)) ELSE table1.text END AS newcolumn

字符串

bkkx9g8r

bkkx9g8r3#

table2.numberstable1.text表示的数据类型必须相同,因此在本例中,您需要将table2.numbers的值乘以CAST

drnojrws

drnojrws4#

试试ISNULL

CASE WHEN ISNULL(table1.text) = 1 THEN table2.numbers ELSE table1.text END AS newcolumn

字符串

lrpiutwd

lrpiutwd5#

我认为错误很明显--CASE语句可能使用的两个列的类型不兼容。
为什么你会认为尝试使用两个不同类型的列中的值不会导致问题?你可能会在结果集中创建一个新列,但它仍然必须有一个类型,并且必须匹配所有潜在的值。
在很多情况下,它可能会推断出类型,但这是有风险的,并且可能不一定是您希望它做出的选择,因此最好让它强制您做出决定。您需要修改CASE语句中的一个或其他列的类型。

相关问题