如何分类大小,如5 / 16,1-1 / 4,1-1 / 2

时间:2014-02-13 20:27:48

标签: regex sql-server-2008 sorting

我正在考虑一种对尺寸列表进行排序的方法,例如5 / 16,1 / 4,7 / 8,1,1-1 / 8,1-1 / 2,10mm,12mm等等。

该列表是sql server 2008中的varchar列。

我认为正则表达式可能是一个可行的选择,只是想知道一个好的方法是否已经存在。

由于

2 个答案:

答案 0 :(得分:2)

您可以使用相同单位的数字度量的另一列,然后对其进行排序。但是,如果你将它排序为varchar,你将按字母顺序排序。

答案 1 :(得分:2)

是5/16英寸?它没有说。

我会用标准化数据存储另一列。将所有值转换为mm并将其存储。所以你的数据库有一个"显示列"这是13毫米或1/2",但两个记录都有一个"毫米"值为13的列(或1/2和#34;如果不进行舍入,则值为12.7)。

然后当您排序时,您将按相同的度量单位对所有内容进行排序。它会更快(因为您需要对数字进行排序)并且您不需要即时进行转换。

或者单独存储单位和值,就像这个问题一样,并对case语句的结果进行排序。但是我不推荐这个,它复杂而且速度慢。

How to conditionally convert inches to cm in MySQL (or similar conversions during SELECT)?