查询按字符串的数值大小排序问题
CREATE TABLE tb(Item varchar(10),Model varchar(10))
INSERT tb SELECT 'Table','10.5CM'
UNION ALL SELECT 'Table','10CM'
UNION ALL SELECT 'Table','12CM'
Go
--怎么查询得到以下结果:(Model列的数字长度不一定,相当于按数字大小排序)
Item Model
---------------------
Table 10CM
Table 10.5CM
Table 12CM
---------------------------
select * from tb order by Model
以上语句只能得到:
Item Model
---------------------
Table 10.5CM
Table 10CM
Table 12CM
------最佳解决方案--------------------
CREATE TABLE tb(Item varchar(10),Model varchar(10))
INSERT tb
SELECT 'Table','10.5CM'
UNION ALL SELECT 'Table','10CM'
UNION ALL SELECT 'Table','12CM'
select * from tb order by cast(replace(Model,'CM','') as decimal)
/*
Item Model
---------- ----------
Table 10CM
Table 10.5CM
Table 12CM
(3 row(s) affected)
*/
------其他解决方案--------------------非常感谢,因为后面的单位可能随机,不一定是CM,有可能是其他的字母,怎么处理。
------其他解决方案--------------------做单位换算后,统一单位才能排序.
------其他解决方案--------------------我是想说,比如另一张单据,单位全都是用英寸, " 即英文的双引号,
或者遇到用M(米),KG(公斤)等等,能否按前面的数值取出来排序。