SQL按字典顺序排序,但首先使用较长的字符串

时间:2015-04-16 21:48:10

标签: sql-server tsql sql-order-by

在SQL Server中,我有一个包含要排序的列的表。如果我应用通常的ORDER BY,则按预期执行以下操作:

banana
bananaphone
car
carpet
dishes
//etc

但是,我想让它们以另一种方式排序:

bananaphone
banana
carpet
car
dishes
//etc

仍按字典顺序排列,但如果字母匹配且一个字母长于另一个字母,则将较长的字母放在第一个字母上。

是否可以在T-SQL中进行此类查询?

我甚至不知道这种排序算法是否有名称,我找不到它。

请注意,这篇文章中的数据只是一个例子,我将存储用户定义的数据。

1 个答案:

答案 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));