在DB中存储英尺/英寸

时间:2017-02-13 17:22:27

标签: sql-server database sql-server-2008

我有很多不同的英尺/英尺字符串:

10 feet and 8 1/4 inches 
7 feet and 4 3/8 inches

我需要将它存储到DB(我使用MS SQL) 怎么做最好的方法?我看到以下方法:

  1. 分开存放。一个字段用于英尺,一个字段用于分子,一个字段用于分母。即第一个字符串将是:
  2.   

    脚:10

         

    分子:33(4 * 8 + 1)

         

    分母:4

    1. 以毫米为单位存储。在这种情况下,我无法恢复到简单的分数,因为客户希望看到

    2. 以英寸为单位存储,但以小数表示。同样的问题,无法恢复到简单的分数。

    3. 如何在MS SQL中以优雅的方式解决这个问题?谢谢

2 个答案:

答案 0 :(得分:1)

与@AaronBertrand类似,但这是标准化的,它使用一个字段来显示分数,同时保持分子和分母用于计算。

当没有分数时,显示值可以设置为空字符串。

create table Fractions (
ID int identity(1,1),
DisplayValue varchar(10),
Numerator int,
Denominator int
)

答案 1 :(得分:1)

如果这仅用于存储和计算,那么另一个选项是创建一个CLR用户定义的数据类型,它允许您将逻辑封装在内部并在Sql Server中的任何位置使用它(除了作为索引字段)。

CLR User-Defined Types

该页面可能会谈论2016年,但它也在2005年以上得到支持。