【sql server】英文按首字母排序+首字母相同英文排中文后面+数字开头最后+忽略空格影响

本文介绍了在SQLServer中如何实现按英文首字母、中文拼音排序,特别是处理数字开头的情况,以及如何去除字符串首尾空格的影响。通过示例代码展示了对数据表的复杂排序操作,适用于通讯录等需要中文排序的场景。
摘要由CSDN通过智能技术生成

文章目录


淦,sql server比oracle难用

按英文按首字母排序+首字母相同英文排中文后面+数字开头最后+忽略空格影响排序的意义多在于需对中文进行排序,例如:通讯录。

代码

思路是按名字的拼音或首字母(中文对应拼音,英文对应首字母)排序(如果是数字开头则把对应排序字段设贼搞如’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#】获取汉字拼音首字母和全拼

没有粉丝,没有评论,甚至连读者都没有。因为自己写的烂,因为自己水平有限,所以自己的作品一经发出就石沉大海了,得不到任何的回信,就好像自己写的东西是给自己看的。自己的作品怎么看都好像不够完美,全身的毛病,所以读者不喜欢也很正常对吧!

其实最让我开心的是有些读者们夸我文笔不错,或许是有人第一次这样夸我的缘故吧!又或许是我写的东西没什么人认可,我感受到了一种前所未有的激动,对于未来的憧憬,对自己写下去的动力。

因为有你们,我的写作之路才不孤独,因为有你们,我才能坚持到现在,如果有一天我真的写出圈了,或许我们可以整个交流会之类的,到时候促膝长谈。

“书山有路勤为径,学海无涯苦作舟。”写作苦是苦了点,整得我差点就想放弃了,不过还好有你们。我也不急着成功,因为没有个几十年如一日的坚持,哪能轻易成功?

茫茫文海无人意,天下有君识吾心。文海很孤独,但是有诸君,便足以令我至千里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软泡芙

给爷鞠躬!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值