从select语句更改列的值

问题描述 投票:0回答:1

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

当前正在尝试:

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

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

ruby-on-rails postgresql
1个回答
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是数字数据类型(而不是字符串),则应删除12周围的单引号。

在您的代码中:

select( "concat_ws(', ', case when e110618 in ('1', '2') then 18 end, e110717, e110519)" )

© www.soinside.com 2019 - 2024. All rights reserved.