Sql server SQL Server按英寸大小的列排序

Sql server SQL Server按英寸大小的列排序,sql-server,Sql Server,我在数据库中有英寸大小的列-例如 1", 3/4", 15/16", 5/8" etc 所以当我运行查询时,让我们说 SELECT * FROM TB_Items ORDER BY Size ASC 它返回: 1", 5/8" , 3/4" , 15/16" 但我需要 5/8", 3/4", 15/16", 1" 请帮忙 注意:Size列数据类型为varchar根据需要添加更多大小 ..ORDER BY CASE WHEN inch_col = "5/8" THEN 1 WH

我在数据库中有英寸大小的列-例如

1", 3/4", 15/16", 5/8" etc
所以当我运行查询时,让我们说

SELECT * 
FROM TB_Items 
ORDER BY Size ASC
它返回:

 1", 5/8" , 3/4" , 15/16" 
但我需要

5/8", 3/4", 15/16", 1"
请帮忙


注意:
Size
列数据类型为
varchar

根据需要添加更多大小

..ORDER BY 
CASE WHEN inch_col = "5/8" THEN 1
 WHEN inch_col = "3/4" THEN 2
 WHEN inch_col = "15/16" THEN 3
 WHEN inch_col = "1" THEN 4
 ELSE 5 END
如果尺寸
create table Item
(
    Id int not null identity primary key,
    Size varchar(100) not null
)
go

insert into Item (Size)
    values ('1"'), ('3/4"'), ('15/16"'), ('5/8"');
go

select 
    id, size
from 
    Item
order by
    CAST((CASE CHARINDEX('/', Size) WHEN 0 THEN SUBSTRING(Size, 1, LEN(Size) - 1) ELSE SUBSTRING(Size, 1, CHARINDEX('/', Size) - 1) END) as DECIMAL(18, 4)) /
    CASE CHARINDEX('/', Size) WHEN 0 THEN 1 ELSE CAST(SUBSTRING(Size, CHARINDEX('/', Size) + 1, LEN(Size) - CHARINDEX('/', Size) - 1) as INT) END