在SQL Server中,我有一个包含要排序的列的表。如果我应用通常的ORDER BY
,则按预期执行以下操作:
banana
bananaphone
car
carpet
dishes
//etc
但是,我想让它们以另一种方式排序:
bananaphone
banana
carpet
car
dishes
//etc
仍按字典顺序排列,但如果字母匹配且一个字母长于另一个字母,则将较长的字母放在第一个字母上。
是否可以在T-SQL中进行此类查询?
我甚至不知道这种排序算法是否有名称,我找不到它。
请注意,这篇文章中的数据只是一个例子,我将存储用户定义的数据。
答案 0 :(得分:6)
这似乎有效:
declare @YourTable table (YourColumn varchar(100));
insert into @YourTable
select 'bananaphone' union all
select 'banana' union all
select 'carpet' union all
select 'car' union all
select 'dishes' union all
select 'carpet' union all
select 'cars' union all
select 'CARP'
select YourColumn
from @YourTable
order
by YourColumn+replicate(char(255), 100-len(YourColumn));