我有一些在字符串末尾有版本号的字符串。我需要对它们进行排序。
1
5
6
L1
L2
L123
L300
L500
L123.5
L300.5
如果我排除.x行,我可以使用LPAD对它们进行排序,但是版本号让我感到困惑。希望将数据解释如下,以便我可以正确排序,但我失败了。
0001.00
0005.00
0006.00
00L1.00
00L2.00
L123.00
L300.00
L500.00
L123.50
L300.50
答案 0 :(得分:0)
假设版本号的长度相同,以下内容将为您提供所需内容:
use DBName;
create table versions(
Id int not null auto_increment,
primary key(Id),
ver varchar(20) not null
)TYPE=MyISAM;
insert into versions(ver) values('1');
insert into versions(ver) values('5');
insert into versions(ver) values('6');
insert into versions(ver) values('L1');
insert into versions(ver) values('L2');
insert into versions(ver) values('L123');
insert into versions(ver) values('L300');
insert into versions(ver) values('L500');
insert into versions(ver) values('L123.5');
insert into versions(ver) values('L300.5');
Select CONCAT( LPAD(ver, 4, '0'),
Case
When dot ='.'
Then CONCAT('.', SUBSTRING(ver, 6, 1), '0')
Else '.00'
End
) VersionNumber
From
(
Select ver, SUBSTRING(ver,5,1) dot From versions
) as sub
Order by VersionNumber;
这将给你:
0001.00
0005.00
0006.00
00L1.00
00L2.00
L123.00
L123.50
L300.00
L300.50
L500.00