在PostgreSQL中,避免在CASE语句中使用类型评估可以采取以下解决方法:
例如,假设我们有一个包含整数值的列,并且我们希望根据该列的值返回不同的结果:
SELECT CASE WHEN my_column::text = '1' THEN 'One'
WHEN my_column::text = '2' THEN 'Two'
ELSE 'Other' END AS result
FROM my_table;
在上面的示例中,我们使用了::text
将整数转换为文本类型,以便与字符串进行比较。
例如,假设我们有一个包含数字值的列,并且我们希望根据该列的值返回不同的结果:
WITH data AS (
SELECT my_column::numeric AS value
FROM my_table
)
SELECT CASE WHEN value = 1 THEN 'One'
WHEN value = 2 THEN 'Two'
ELSE 'Other' END AS result
FROM data;
在上面的示例中,我们使用了公共表表达式(CTE)来显式地定义了value
列的类型为numeric
,并在CASE语句中引用了该列。
总结起来,避免在CASE语句中使用PostgreSQL类型评估可以通过使用明确的类型转换函数或者使用子查询或CTE来解决。这样可以确保在比较或计算时使用正确的类型,避免类型评估问题。