按英文按首字母排序+首字母相同英文排中文后面+数字开头最后+忽略空格影响排序的意义多在于需对中文进行排序,例如:通讯录。
思路是按名字的拼音或首字母(中文对应拼音,英文对应首字母)排序(如果是数字开头则把对应排序字段设贼搞如’zzzz’以达到数字排最后的效果),然后判断开头是中文还是英文,中文的相关排序字段优于英文(以达到英文排中午后面)
忽略空格影响用到的方法:
LTRIM()
函数用于去掉字符串左边多余的空格。
LTRIM(character_expression)
//character_expression:字符或二进制数据表达式,可以是常量、变量或列。
//character_expression必须是可以隐式转换为varchar的数据类型,否则,需要使用CAST()函数显示转换改参数。
与之对应的是RTRIM(character_expression)用于去掉字符串右边多余的空格。
和TRIM(character_expression)用于去掉字符串左右两边多余的空格。(SQL Server 2017新增,低版本不支持)
select BusinessCardFolderId,RealName,Mobile,Company,Job,Phone,Email,Address,Tags,Demanders,Remark,CreateTime,DeleteMark,EnabledMark,CreateDate,CreateUserId,ModifyDate,ModifyUserId,DeleteDate,DeleteUserId,OrganizeId,Name,FamilyName,Department,BusinessFax,BusinessWebSite,Partner,Origin from (
--非数字开头
select * from (select dbo.GetPY(ltrim(RealName)) ordername,
CAST(
CASE
WHEN RealName LIKE '[a-z]%'
THEN 2
ELSE 1 END AS int)as ChineseAndEnglishSorting ,*
from T_Info_OA_BusinessCardFolder where (RealName not LIKE '[0-9]%')) a
union all
--数字开头
select * from (select 'zzzz' ordername,3 ChineseAndEnglishSorting,* from T_Info_OA_BusinessCardFolder where RealName LIKE '[0-9]%') b
) c
order by ordername,ChineseAndEnglishSorting,RealName
offset 30 rows
FETCH NEXT 30 ROWS ONLY
【sql server】获取中文首字母函数
【C#】获取汉字拼音首字母和全拼
没有粉丝,没有评论,甚至连读者都没有。因为自己写的烂,因为自己水平有限,所以自己的作品一经发出就石沉大海了,得不到任何的回信,就好像自己写的东西是给自己看的。自己的作品怎么看都好像不够完美,全身的毛病,所以读者不喜欢也很正常对吧!
其实最让我开心的是有些读者们夸我文笔不错,或许是有人第一次这样夸我的缘故吧!又或许是我写的东西没什么人认可,我感受到了一种前所未有的激动,对于未来的憧憬,对自己写下去的动力。
因为有你们,我的写作之路才不孤独,因为有你们,我才能坚持到现在,如果有一天我真的写出圈了,或许我们可以整个交流会之类的,到时候促膝长谈。
“书山有路勤为径,学海无涯苦作舟。”写作苦是苦了点,整得我差点就想放弃了,不过还好有你们。我也不急着成功,因为没有个几十年如一日的坚持,哪能轻易成功?
茫茫文海无人意,天下有君识吾心。文海很孤独,但是有诸君,便足以令我至千里。