我需要更改select语句返回的值。当前,当我选择某个列时,返回的值是'1','2'或NULL。我想返回一个不同的值代替“ 1”和“ 2”,例如“ 18”。我试过使用translate
函数无济于事。如何用postgresql完成?
当前正在尝试:
.select("concat_ws(', ', translate(e110618, '12', '18'), e110717, e110519)")
当我删除翻译时,它可以工作,但是输出(1,2,1)不是我所需要的。
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
是数字数据类型(而不是字符串),则应删除1
和2
周围的单引号。
在您的代码中:
select( "concat_ws(', ', case when e110618 in ('1', '2') then 18 end, e110717, e110519)" )