mysql按字段值排序

1.mysql按字段值的拼音首字母排序

关键词binary :SELECT name FROM topic ORDER BYbinary name asc

 

2.php获取汉字拼音的第一个字母

直接调用下面的函数即可。如,echo getinitial("丹");

function getinitial($str)
{
   $asc=ord(substr($str,0,1));
    if($asc<160) //非中文
    {
       if ($asc>=48 &&$asc<=57){
           return '1';  //数字
       }elseif ($asc>=65 &&$asc<=90){
           return chr($asc);   // A--Z
       }elseif ($asc>=97 &&$asc<=122){
           return chr($asc-32); // a--z
       }else{
           return '~'; //其他
       }
    }
   else   //中文
    {
       $asc=$asc*1000+ord(substr($str,1,1));
       //获取拼音首字母A--Z
       if ($asc>=176161 &&$asc<176197){
           return 'a';
       }elseif ($asc>=176197&&$asc<178193){
           return 'b';
       }elseif ($asc>=178193&&$asc<180238){
           return 'c';
       }elseif ($asc>=180238&&$asc<182234){
           return 'd';
       }elseif ($asc>=182234&&$asc<183162){
           return 'e';
       }elseif ($asc>=183162&&$asc<184193){
           return 'f';
       }elseif ($asc>=184193&&$asc<185254){
           return 'g';
       }elseif ($asc>=185254&&$asc<187247){
           return 'h';
       }elseif ($asc>=187247&&$asc<191166){
           return 'j';
       }elseif ($asc>=191166&&$asc<192172){
           return 'k';
       }elseif ($asc>=192172&&$asc<194232){
           return 'l';
       }elseif ($asc>=194232&&$asc<196195){
           return 'm';
       }elseif ($asc>=196195&&$asc<197182){
           return 'n';
       }elseif ($asc>=197182&&$asc<197190){
           return 'o';
       }elseif ($asc>=197190&&$asc<198218){
           return 'p';
       }elseif ($asc>=198218&&$asc<200187){
           return 'q';
       }elseif ($asc>=200187&&$asc<200246){
           return 'r';
       }elseif ($asc>=200246&&$asc<203250){
           return 's';
       }elseif ($asc>=203250&&$asc<205218){
           return 't';
       }elseif ($asc>=205218&&$asc<206244){
           return 'w';
       }elseif ($asc>=206244&&$asc<209185){
           return 'x';
       }elseif ($asc>=209185&&$asc<212209){
           return 'y';
       }elseif ($asc>=212209){
           return 'z';
       }else{
           return '~';
       }
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值