将十进制范围保存到SQL数据库(代码优先)

时间:2018-07-09 12:15:35

标签: sql sql-server entity-framework

有什么方法可以在数据库中存储小数范围?例如,年龄范围是24-35,但目标是确保用户随后可以输入其年龄并接收与此范围相关的数据。

也许有一些有关此主题的教程?

2 个答案:

答案 0 :(得分:1)

使用最小和最大范围的表格制作表格,如下所示:

CREATE TABLE age_range
             (minimum integer,
              maximum integer,
              name AS convert(varchar, minimum) + '-' + convert(varchar, maximum),
              PRIMARY KEY (minimum,
                           maximum),
              CHECK (minimum <= maximum));

如果有任何顾虑,也许还会添加触发器检查,范围不要重叠。

然后,您可以使用以下方式选择年龄范围:

SELECT *
       FROM age_range
       WHERE minimum <= @user_age
             AND maximum >= @user_age;

SQL Fiddle

答案 1 :(得分:0)

在sql表中,没有简单的方法将范围存储在一个字段中。您将需要两个字段:[AgeFrom] int, [AgeTo] int

有一种可能的解决方案是将范围存储在字符串(varchar)字段中并解析所存储的范围信息,例如'24 -35',但这比两场解决方案要复杂得多。

无论如何,您都可以在C#中定义一个对象来确定给定年龄是否在特定范围内,并返回所需数据。