我有字母標記列表,說'1a', '1b', '02', '03', '10', '11',
等等T-SQL - 順序按字母上
現在,什麼是被標記的這個名單上做一個順序的最佳方式?
我越來越'1a', '1b', '10', '11', '02', '03',
,但我需要它是
'1a', '1b', '02', '03', '10', '11'
UPDATE
好吧,我建議以後這樣做,但它不工作。
declare @tokens table(token varchar(20));
insert into @tokens
select '1a'
select '1b'
select '02'
select '10'
select * from @tokens
order by case
when ISNUMERIC(token) = 1 then right('0000000000'+token+'0',10)
else right('0000000000'+token,10)
end
我收到響應,'1b', '02', '10', '1a'
UPDATE2
它的工作原理進行以下更改後。
declare @tokens table(token varchar(20));
insert into @tokens
select '1a'
insert into @tokens
select '1b'
insert into @tokens
select '02'
insert into @tokens
select '10'
select token from @tokens
order by case
when ISNUMERIC(token) = 1 then right('0000000000'+token+'0',10)
else right('0000000000'+token,10)
end
感謝所有的你的美好想法。
您使用的數據庫是? – Oded 2010-07-24 18:41:48
@Oded - sql server 2008,更正了標題,謝謝。 – SoftwareGeek 2010-07-24 18:42:28
@SoftwareGeek - 出於好奇,數據代表什麼?字母字符是否有特殊含義? – Thomas 2010-07-24 19:27:51