查询列并将值更改为数值

时间:2015-07-16 14:04:19

标签: sql sql-server

我正在使用SQL Server 2012.我有一个包含列select new map(d.department as dept, new list(d.employee as emp) from Department d group by d.department; 的表,它只能是下面的四个值:

MyCol

当我查询表格中的数据时,我想将这些值改为数值,所以说MN = 1,ABB = 2,BO = 3& BN = 4。

如何使用select语句执行此操作?

3 个答案:

答案 0 :(得分:3)

简单CASE语句将执行:

SELECT
    CASE MyCol
       WHEN 'MN' THEN 1
       WHEN 'ABB' THEN 2
       WHEN 'BO' THEN 3
       WHEN 'BN' THEN 4
    END
FROM
    dbo.Yourtable

答案 1 :(得分:2)

SELECT
Case When MyCol = 'MN' Then 1
     WHEN MyCol = 'ABB' Then 2
     When MyCol = 'BO' Then 3
     When MyCol = 'BN' Then 4 End as MyCol
From MyTable

答案 2 :(得分:0)

一种简单的方法是添加一个计算列:

alter table t
    add MyColInt as (case MyCol
                       when 'MN' then 1
                       when 'ABB' then 2
                       when 'BO' then 3
                       when 'BN' then 4
                     end);

您可以保证值的正确性:

alter table add constraint ck_MyCol check (MyCol in ('MN', 'ABB', 'BO', 'BN'));

但是,我建议您为缩写创建一个参考表。参考表可以包含数字,全名以及其他可能的信息。然后,外键引用可以保证值正确。