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