我正在考虑一种对尺寸列表进行排序的方法,例如5 / 16,1 / 4,7 / 8,1,1-1 / 8,1-1 / 2,10mm,12mm等等。
该列表是sql server 2008中的varchar列。
我认为正则表达式可能是一个可行的选择,只是想知道一个好的方法是否已经存在。
由于
答案 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)?