SQL将数字转换为单词

时间:2016-06-23 10:10:41

标签: sql sql-server

我正在编写一个简单的SELECT查询来从SQL表中检索一组项目编号。

现在从这个表中,我想获得Item类型,它可以是三个中的一个。 Make, Buy or undefined

我的问题是,这在数据库中以数字表示。我的表中有一个名为ITMTYPE的列,但是说1 or 2 or 3 for Make, Buy or undefined

有人可以告诉我一种向我的选择查询添加列的方法,可以显示项目类型的等效措辞吗?

以下是我想看到的内容,

Item_Number Item_Type_Num   Item Type_val
A                1               Make
B                2               Buy
C                3               Undefined
D                2               Buy
E                1               Make

这第三栏是我想看到的。 感谢

3 个答案:

答案 0 :(得分:3)

您可以使用CASE EXPRESSION

SELECT t.Item_Number,t.ITMTYPE as Item_Type_Num,
       CASE WHEN t.ITMTYPE = 1 THEN 'Make'
            WHEN t.ITMTYPE = 2 THEN 'Buy'
            WHEN t.ITMTYPE = 3 THEN 'undefined'
       END as Item_Type_Val
FROM YourTable t

如果您对此专栏有日常需求,我建议您将其添加到表格中:

ALTER TABLE YourTable
  ADD Item_Val_Type VARCHAR2(10);

然后更新它:

UPDATE YourTable t
SET t.Item_Val_Type = CASE WHEN t.ITMTYPE = 1 THEN 'Make'
                           WHEN t.ITMTYPE = 2 THEN 'Buy'
                           WHEN t.ITMTYPE = 3 THEN 'undefined'
                      END;

答案 1 :(得分:1)

使用简单的案例表达。

select
    Item_Number,
    Item_Type_Num ,
    Case Item_Type_Num
       when 1 then 'Make'
       when 2 then 'Buy'
       when 3 then 'Undefined'
    else 'Unknown'
    end as 'Item_type_val'
from Yourtable

答案 2 :(得分:0)

#include <stdio.h>
#include <math.h>
#include <float.h>//for DBL_MIN and DBL_MAX
#include <fenv.h>

#pragma STDC FENV_ACCESS ON
void show_fe_exceptions(void)
{
    printf("exceptions raised:");
    if(fetestexcept(FE_DIVBYZERO)) printf(" FE_DIVBYZERO");
    if(fetestexcept(FE_INEXACT))   printf(" FE_INEXACT");
    if(fetestexcept(FE_INVALID))   printf(" FE_INVALID");
    if(fetestexcept(FE_OVERFLOW))  printf(" FE_OVERFLOW");
    if(fetestexcept(FE_UNDERFLOW)) printf(" FE_UNDERFLOW");
    feclearexcept(FE_ALL_EXCEPT);
    printf("\n");
}

int main(void)
{
    printf("MATH_ERREXCEPT is %s\n",
           math_errhandling & MATH_ERREXCEPT ? "set" : "not set");

    printf("0.0/0.0 = %f\n", 0.0/0.0);
    show_fe_exceptions();

    printf("1.0/0.0 = %f\n", 1.0/0.0);
    show_fe_exceptions();

    printf("1.0/10.0 = %f\n", 1.0/10.0);
    show_fe_exceptions();

    printf("sqrt(-1) = %f\n", sqrt(-1));
    show_fe_exceptions();

    printf("DBL_MAX*2.0 = %f\n", DBL_MAX*2.0);
    show_fe_exceptions();

    printf("nextafter(DBL_MIN/pow(2.0,52),0.0) = %.1f\n",
                      nextafter(DBL_MIN/pow(2.0,52),0.0));
    show_fe_exceptions();
}