sql server - 将值显示为不同的值

时间:2017-11-20 15:51:45

标签: sql-server procedures

我在Sql Server中有以下情况:

在表格中,我们有一个列,我们用三个可能的值1,2和3填充。假设1表示是,2表示否,3表示可能。

有没有办法选择此列显示的值为yes,no,而不是1,2和3?

4 个答案:

答案 0 :(得分:0)

是..你可以使用CASE Expression来做到这一点

select 
case value 
  when 1 then 'yes'
  when 2 then 'no'
  when 3 then 'maybe'
end
from
table

答案 1 :(得分:0)

您可以使用Case进行此操作,如下所示

SELECT
CASE test_column
  WHEN 1THEN 'YES' 
  WHEN 2 THEN 'NO'  
  ELSE 'MAY BE' 
END as test_op
FROM table1

答案 2 :(得分:0)

是的,有可能,您可以使用类似这样的案例

      select 
      case when field = 1 then 'YES' 
           when field = 2 then 'NO' else 'MAYBE' end FieldName
      from table

注意:除了1或2之外的任何值都可能是,您可以为数字3添加另一个案例。

答案 3 :(得分:0)

在其他答案中看到的case/when语句的替代方法是创建一个包含值描述的引用表(1 / 2 / 3)。

这样做的最大好处是,如果在多个地方使用它,您可以一次更新所有这些。

dbo.curValDesc表是您需要创建/填充的参考表。然后您的消费查询看起来就像底部的那样。

create table dbo.existingData
    (
        rowID int
        , curVal tinyint --the column with values of 1/2/3
    )

insert into dbo.existingData
values (1, 1)
    , (2, 2)
    , (3, 3)
    , (4, 3)
    , (5, 2)
    , (6, 1)
    , (7, 1)

create table dbo.curValDesc
    (
        curVal tinyint
        , curValDesc varchar(10)
    )

insert into dbo.curValDesc
values (1, 'Yes')
    , (2, 'No')
    , (3, 'Maybe')

select ed.rowID
, cvd.curValDesc
from dbo.existingData as ed
inner join dbo.curValDesc as cvd on ed.curVal = cvd.curVal