3

也许在 SQL Server 方面有更多经验的人可以提供帮助。我正在为一个新项目整理查找表。对于用户可以执行的 2 种不同测试(细菌/真菌),结果当前记录在纸上,如下所示:

细菌:细菌 cfu/ml

  • <100
  • 10^2
  • 10^3
  • 10^4
  • 10^5
  • 10^6
  • 10^7

真菌:真菌(酵母和霉菌)cfu /ml

  • <100

  • 10^2

  • 10^3

  • 10^4

  • 10^5

    在 SQL Server 2008 R2 中捕获这些值的最佳方法是什么?特别是数据类型和大小?

4

3 回答 3

1

像这样的东西可能就足够了:

CREATE TABLE AmountLookup (
  UnitsLimitExp int NULL,
  Name nvarchar(10) NULL
)

INSERT INTO AmountLookup
SELECT 2, '<100'
UNION ALL SELECT 3, '10^3'
UNION ALL SELECT 4, '10^4'
UNION ALL SELECT 5, '10^5'
UNION ALL SELECT 6, '10^6'
UNION ALL SELECT 7, '10^7'

这样您就可以存储指数,而不是数量。真正的价值只是一个 GUI 表示。另一件事是您的查找名称,在这里很难看(10 ^ 3)。但是,您可以存储 HTML 代码并将其视为用户界面上的原始 HTML,例如 10 410<sup>4</sup>

于 2013-08-06T13:57:55.857 回答
0

如果这些是值而不是范围,INT将起作用。如果开始处理的值大于 20 亿,BIGINT应该使用。如果需要十进制数字,可以使用DECIMAL( NUMERIC) 类型。

由于这些是离散值,因此您的另一个选择是使用查找表来查找值,您可以在保存对数据的引用的表中使用其代理键 id。这样您就可以表示一个概念,例如 "<100" 。

于 2013-08-06T13:16:44.593 回答
0

我建议一个varchar(50)

  • <100“足够干净”
  • 10^2“食物过期”
  • 10^3 《憨豆先生的腋窝》
  • 10^4“三天大的尸体”
  • 10^5 《生化实验》
  • 10^6“蛆虫入侵”
  • 10^7 "细菌溢出"
于 2013-08-06T13:21:50.787 回答