cstring里面如何将单词按照字母顺序排序

cstring里面如何将单词按照字母顺序排序,第1张

说白点 就是你要知道 strcmp的功能,它是从第一个字母比较,比较的是ASCII码(如果不知道这个必须去看),懂了这个基本上就做出来了,然后还有个排序问题,是从小到大排序,因为C,D,M,W对应的ASCII码是从小到大的

看到这个问题感兴趣了把 我用sqlserver2008 玩了下 源码如下:

declare @tb table

(

val varchar(50)

)

insert into @tb values('106-Y00001')

insert into @tb values('106-Y00002')

insert into @tb values('106-C00001')

insert into @tb values('106-C00002')

insert into @tb values('106-1969-D002')

insert into @tb values('106-1969-D001')

insert into @tb values('106-D00001')

insert into @tb values('106-D00002')

insert into @tb values('106-1969-Y001')

insert into @tb values('106-1969-Y002')

insert into @tb values('106-1969-C001')

insert into @tb values('106-1969-C002')

insert into @tb values('106-1969-FC001')

insert into @tb values('106-1969-FY002')

insert into @tb values('106-1970-Y001')

insert into @tb values('106-1971-C001')

insert into @tb values('107-Y00001')

insert into @tb values('108-Y00001')

select ,SUBSTRING(val,1,3) a,case LEN(val) - charindex('-',reverse(val)) when 3 then '0'+ case substring(reverse(substring(reverse(val),1,charindex('-',reverse(val)) - 1)),1,1) when 'Y' then '0' when 'C' then '1' else '2' end

else '1'+ SUBSTRING(val,5,4) + case substring(reverse(substring(reverse(val),1,charindex('-',reverse(val)) - 1)),1,1) when 'Y' then '0' when 'C' then '1' when 'D' then '2' else '3'+ case substring(reverse(substring(reverse(val),1,charindex('-',reverse(val)) - 1)),2,1) when 'C' then '0' else '1' end end

end b

from @tb

order by a,b

大概看了下没问题,感觉思路对就OK了

这个无法出现正常的排序。在SQL中对于字符或是汉字的排序依据是汉字字母按英文排序的方式。也就是说如果在没有更改的情况下,select from table order by priority [ASC]顺序应该是低(D),高(G),中(Z)的顺序进行排列的。而若是select from table order by priority DESC(降序)时与ASC正好相反。高中低的顺序是我们理解的,而不是计算机所能理解的,所有字符对于计算机来说都是没有意义的,所以在不更改的前提下是没有办法让计算机理解高中低的含义并让他排序的。

但数据库一般的排序有三种手段,第一种就是默认,已经介绍过了,另两种是笔画排序和ASC码序(机器码序)笔划排序对于汉字来说还可以确认,但是对于机器码序有很大的不可预知性,我们不可能也记不信每一个汉字的机器码的,所以如果你能恰好得出低中高的顺序,那么现在不是前两种顺序就有可能是后一种顺序,只要使用DESC就可以降序排列了!

试下这个(只写了order by 那部分):

order by (case when ISNUMERIC(Visit_no)=1 then 'a'+right(replicate('0',50)+cast(Visit_no as varchar),50) else 'b'+cast(Visit_no as varchar) end)

你的数据样本是怎样的

hi我聊吧

以上就是关于cstring里面如何将单词按照字母顺序排序全部的内容,包括:cstring里面如何将单词按照字母顺序排序、sql排序 数据库中有一字段 格式分为两种数据格式 进行排序、sql语句中的order by排序问题 数据库中有一priority字段,取值为高、中、低。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9401898.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存