zoukankan      html  css  js  c++  java
  • 汉字字段按拼音首字母实现分组排序

    有两种方法:
    第用:用.net类实现:
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    /*
    * 说明:此类用于将一个字符串找出首字声母,用法:ChineseConvert.UtilIndexCode(str);
    *
    *
    */
    /// <summary>
    /// ChineseConvert 的摘要说明
    /// </summary>
    public class ChineseConvert
    {
    public ChineseConvert()
    {
    }
    /// <summary>
    /// 返回字符串的首写字母字符串
    /// </summary>
    /// <param name="IndexTxt">需得到首写字母的字符串</param>
    /// <returns></returns>
    public static String UtilIndexCode(String IndexTxt)
    {
    string _Temp = null;
    for (int i = 0; i < IndexTxt.Length; i++)
    _Temp = _Temp + GetOneIndex(IndexTxt.Substring(i, 1));
    return _Temp;
    }

    //得到单个字符的首字母
    private static String GetOneIndex(String OneIndexTxt)
    {
    if (Convert.ToChar(OneIndexTxt) >= 0 && Convert.ToChar(OneIndexTxt) < 256)
    return OneIndexTxt;
    else
    return GetGbkX(OneIndexTxt);
    }

    //根据汉字拼音排序得到首字母
    private static string GetGbkX(string str)
    {
    if (str.CompareTo("吖") < 0)
    {
    return str;
    }
    if (str.CompareTo("八") < 0)
    {
    return "A";
    }

    if (str.CompareTo("嚓") < 0)
    {
    return "B";
    }

    if (str.CompareTo("咑") < 0)
    {
    return "C";
    }
    if (str.CompareTo("妸") < 0)
    {
    return "D";
    }
    if (str.CompareTo("发") < 0)
    {
    return "E";
    }
    if (str.CompareTo("旮") < 0)
    {
    return "F";
    }
    if (str.CompareTo("铪") < 0)
    {
    return "G";
    }
    if (str.CompareTo("讥") < 0)
    {
    return "H";
    }
    if (str.CompareTo("咔") < 0)
    {
    return "J";
    }
    if (str.CompareTo("垃") < 0)
    {
    return "K";
    }
    if (str.CompareTo("呒") < 0)
    {
    return "L";
    }
    if (str.CompareTo("拏") < 0)
    {
    return "M";
    }
    if (str.CompareTo("噢") < 0)
    {
    return "N";
    }
    if (str.CompareTo("妑") < 0)
    {
    return "O";
    }
    if (str.CompareTo("七") < 0)
    {
    return "P";
    }
    if (str.CompareTo("亽") < 0)
    {
    return "Q";
    }
    if (str.CompareTo("仨") < 0)
    {
    return "R";
    }
    if (str.CompareTo("他") < 0)
    {
    return "S";
    }
    if (str.CompareTo("哇") < 0)
    {
    return "T";
    }
    if (str.CompareTo("夕") < 0)
    {
    return "W";
    }
    if (str.CompareTo("丫") < 0)
    {
    return "X";
    }
    if (str.CompareTo("帀") < 0)
    {
    return "Y";
    }
    if (str.CompareTo("咗") < 0)
    {
    return "Z";
    }
    return str;
    }
    }



    第二,用数据库函数实现:
    create function f_GetPy(@str nvarchar(4000))
    returns nvarchar(4000)
    as
    begin
    declare @strlen int,@re nvarchar(4000)
    declare @t table(chr nchar(1) collate Chinese_PRC_CI_AS,letter nchar(1))
    insert into @t(chr,letter)
    select '吖','A' union all select '八','B' union all
    select '嚓','C' union all select '咑','D' union all
    select '妸','E' union all select '发','F' union all
    select '旮','G' union all select '铪','H' union all
    select '丌','J' union all select '咔','K' union all
    select '垃','L' union all select '呒','M' union all
    select '拏','N' union all select '噢','O' union all
    select '妑','P' union all select '七','Q' union all
    select '呥','R' union all select '仨','S' union all
    select '他','T' union all select '屲','W' union all
    select '夕','X' union all select '丫','Y' union all
    select '帀','Z'
    select @strlen=len(@str),@re=''
    while @strlen>0
    begin
    select top 1 @re=letter+@re,@strlen=@strlen-1
    from @t a where chr<=substring(@str,@strlen,1)
    order by chr desc
    if @@rowcount=0
    select @re=substring(@str,@strlen,1)+@re,@strlen=@strlen-1
    end
    return(@re)
    end
    go

    查询:如 按字母a排序
    select * from 表名 where left(dbo.f_GetPy(列名),1) = 'a'

  • 相关阅读:
    ...
    抛砖引玉,说平台概念
    杂想
    相机镜头简易擦拭篇
    优秀软件体验2
    牛人就在我的身边
    对魔时网做了一下了解
    来了兴致,试试django吧,呵呵
    SD2.0大会
    从《首届中国优秀软件创新大赛 寻找中国软件新星 》预测互联网的未来趋势
  • 原文地址:https://www.cnblogs.com/activities/p/2180533.html
Copyright © 2011-2022 走看看