也许在 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 中捕获这些值的最佳方法是什么?特别是数据类型和大小?
也许在 SQL Server 方面有更多经验的人可以提供帮助。我正在为一个新项目整理查找表。对于用户可以执行的 2 种不同测试(细菌/真菌),结果当前记录在纸上,如下所示:
细菌:细菌 cfu/ml
真菌:真菌(酵母和霉菌)cfu /ml
<100
10^2
10^3
10^4
10^5
在 SQL Server 2008 R2 中捕获这些值的最佳方法是什么?特别是数据类型和大小?
像这样的东西可能就足够了:
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 4是10<sup>4</sup>
。
如果这些是值而不是范围,INT
将起作用。如果开始处理的值大于 20 亿,BIGINT
应该使用。如果需要十进制数字,可以使用DECIMAL
( NUMERIC
) 类型。
由于这些是离散值,因此您的另一个选择是使用查找表来查找值,您可以在保存对数据的引用的表中使用其代理键 id。这样您就可以表示一个概念,例如 "<100" 。
我建议一个varchar(50)
: