有没有办法在字符串的开头放置一个不可见的字符来改变它的排序顺序?

Lil*_*sey 14 t-sql sql-server sorting

有没有办法在sqlserver中的数据字符串的开头放置非打印或非突出字符.这样当执行order by时,字符串按字母顺序排在字母z之后?

我在字符串的开头使用了一个空格来获取排序列表顶部的字符串,但我希望做一些类似的事情,在列表的末尾放一个字符串.

我宁愿不在表中添加另一个字段如"SortOrder"来用于排序,我宁愿不必在我的代码中对列表进行排序.

补充:是的我知道这是一个坏主意,感谢所有人提到它,但仍然,我很好奇我能提出的问题是什么

Ric*_*iwi 9

由于没有人冒险正确回答你的问题,这是我的答案

鉴于:您已经添加<space>了一些其他数据,以使它们显示为顶部

解决方案:添加CHAR(160)使其显示在底部.这实际上也是一个空间,但是它被设计用于计算机系统,而不是将其视为分词(因此名称).

http://en.wikipedia.org/wiki/Non-breaking_space

您的要求:

  1. 不向表中添加"SortOrder"等其他字段
  2. 不对代码中的列表进行排序

我觉得这很合适!

create table my(id int,data varchar(100))
insert my
select 1,'Banana' union all
select 2,Char(160) + 'mustappearlast' union all
select 3,' ' +N'mustappearfirst' union all
select 4,'apple' union all
select 5,'pear'

select *
from my
order by ASCII(lower(data)), data
Run Code Online (Sandbox Code Playgroud)

(好吧,我作弊,我必须添加,ASCII(lower(但这最接近你的要求,而不是到目前为止所有其他答案)