如何在SQL Server 2012中替换0和1

时间:2017-01-29 06:49:38

标签: sql sql-server database sql-server-2012 sql-function

我有一个橄榄球数据库+播放器表。在播放器表中我有表现,我想表现为

  • 0 =低
  • 1 =中等
  • 2 =高

我不知道列应该是什么数据类型。这样做的公式或功能是什么?

请帮忙

4 个答案:

答案 0 :(得分:4)

您可以像这样定义列:

performance tinyint not null check (performance in (0, 1, 2))

tinyint只需1个字节的值,值的范围可以是0到255。

如果您将值存储为1 - 低,2 - 中,3 - 高并且正在使用SQL Server 2012+,那么您可以使用CHOOSE函数将值转换为文本,如下所示:

select choose(performance,'Low','Medium','High')
. . .

如果你真的想存储为0,1,2,请使用:

select choose(performance+1,'Low','Medium','High')
. . .

如果您使用较低版本的SQL Server,可以使用CASE,如下所示:

case performance 
    when 0 then 'Low'
    when 1 then 'Medium'
    when 2 then 'High'
end

答案 1 :(得分:1)

您可以通过多种方式处理此问题。一种方法是使用int列来表示效果,该列将采用值0, 1, 2, ...。要获得这些性能的标签,您可以创建一个单独的表,将这些数字映射到描述性字符串,例如。

id | text
0  | low
1  | medium
2  | high

然后,只要您需要全文说明,就可以加入此表。请注意,这可能是随着性能类型数量开始变大而扩展的唯一选项。

如果您不想要单独的表,您还可以使用CASE表达式在查询时生成标签,例如

CASE WHEN id = 0 THEN 'low'
     WHEN id = 1 THEN 'medium'
     WHEN id = 1 THEN 'high'
END

答案 2 :(得分:1)

1-列数据类型应为b int。 2-你发送日期的地方首先检查表现如下: -    if(性能=低)        perVar = 0 发送到数据库

答案 3 :(得分:1)

我会在性能表中使用TINYINT数据类型来节省空间,然后使用第二个表中的FOREIGN KEY CONSTRAINT来保存描述。约束将强制在性能表中输入0,1,2,同时提供可以增长以包括其他性能指标的规范化解决方案。