读书人

查询按字符串的数值大小排序有关问题

发布时间: 2012-12-27 10:17:10 作者: rapoo

查询按字符串的数值大小排序问题
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
---------------------
Table10CM
Table10.5CM
Table12CM

---------------------------
select * from tb order by Model
以上语句只能得到:
Item Model
---------------------
Table10.5CM
Table10CM
Table12CM
[最优解释]


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(公斤)等等,能否按前面的数值取出来排序。

读书人网 >SQL Server

热点推荐