从选择语句更改列的值

我需要更改select语句返回的值。当前,当我选择某个列时,返回的值是'1','2'或NULL。我想返回一个不同的值代替“ 1”和“ 2”,例如“ 18”。我尝试使用translate函数无济于事。用postgresql如何完成?

当前正在尝试:

.select("concat_ws(',',translate(e110618,'12','18'),e110717,e110519)") 

当我删除翻译时,它可以工作,但是输出(1,2,1)不是我所需要的。

jian385330454 回答:从选择语句更改列的值

我认为translate()并不是您真正需要的。它会执行基于字符的搜索/替换,而您似乎希望匹配整个字符串。

您可以改用case表达式。这是适用于大多数RDBMS的标准SQL。

case when e110618 in ('1','2') then 18 else e110618 end

如果1和2之外唯一可能的其他值为null,则可以简化,因为case默认返回null

case when e110618 in ('1','2') then 18 end

注意:如果e110618是数字数据类型(而不是字符串),则应删除12周围的单引号。

在您的代码中:

select(
    "concat_ws(',',case when e110618 in ('1','2') then 18 end,e110717,e110519)"
) 
本文链接:https://www.f2er.com/3131569.html

大家都在问