首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 如何实现拼音查询数据库
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • core2
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-04-06 16:08:51 楼主
    我想实现这么一个功能,当在C#窗体中输入一个汉字词组的拼音首字母,就会自动从数据库中检索内容。
    听说好像还需要一个数据库,具体该如何实现呢,麻烦帮帮忙!
    10  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • LittleLee
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-04-06 18:15:011楼 得分:0
    我也在想这个问题,医院里查药名就是这样的!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wq610612
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-04-06 18:16:252楼 得分:0
    可不可以做个拼音的数据库呢
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dancingbit
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-04-06 18:20:503楼 得分:0
    需要一个汉字与其拼音的对照表,在存储需要检索的数据的时候就利用这个表生成对应汉字字符串的拼音字符串,与原始数据一起存储,然后,就可以利用拼音来查询了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • benbenkui
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-04-06 19:01:164楼 得分:0
    顶楼上的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zanfeng
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-04-06 19:12:295楼 得分:0
    也可查查编码方式(汉字).有时候对一些东西的排序就是用的拼音不过是微软件内置的.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • anheizhizi
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-04-06 19:33:276楼 得分:0
    MARK 一下


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yuyue618
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-04-30 21:59:257楼 得分:0
    查编码方式有个很大的缺陷,只有3500个字是按拼音排列的  所以很多字都查不出来
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • leohuang
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-04-30 23:05:228楼 得分:0
    就是助记码,数据表里有两个字段
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • DBKING
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-04-30 23:13:409楼 得分:0
    提供一个获取拼音首字母的SQL函数
    Create FUNCTION [dbo].[GetPY](@str nvarchar(4000))
    RETURNS nvarchar(4000)
    AS
    BEGIN
    DECLARE @py TABLE(
      ch char(1),
      hz1 nchar(1) COLLATE Chinese_PRC_CS_AS_KS_WS,
      hz2 nchar(1) COLLATE Chinese_PRC_CS_AS_KS_WS)
    INSERT @py SELECT 'A',N'吖',N'鏊'
    UNION  ALL SELECT 'B',N'八',N'簿'
    UNION  ALL SELECT 'C',N'嚓',N'错'
    UNION  ALL SELECT 'D',N'哒',N'跺'
    UNION  ALL SELECT 'E',N'屙',N'贰'
    UNION  ALL SELECT 'F',N'发',N'馥'
    UNION  ALL SELECT 'G',N'旮',N'过'
    UNION  ALL SELECT 'H',N'铪',N'蠖'
    UNION  ALL SELECT 'J',N'丌',N'竣'
    UNION  ALL SELECT 'K',N'咔',N'廓'
    UNION  ALL SELECT 'L',N'垃',N'雒'
    UNION  ALL SELECT 'M',N'妈',N'穆'
    UNION  ALL SELECT 'N',N'拿',N'糯'
    UNION  ALL SELECT 'O',N'噢',N'沤'
    UNION  ALL SELECT 'P',N'趴',N'曝'
    UNION  ALL SELECT 'Q',N'七',N'群'
    UNION  ALL SELECT 'R',N'蚺',N'箬'
    UNION  ALL SELECT 'S',N'仨',N'锁'
    UNION  ALL SELECT 'T',N'他',N'箨'
    UNION  ALL SELECT 'W',N'哇',N'鋈'
    UNION  ALL SELECT 'X',N'夕',N'蕈'
    UNION  ALL SELECT 'Y',N'丫',N'蕴'
    UNION  ALL SELECT 'Z',N'匝',N'做'
    DECLARE @i int
    SET @i=PATINDEX('%[吖-做]%' COLLATE Chinese_PRC_CS_AS_KS_WS,@str)
    WHILE @i>0
      SELECT @str=REPLACE(@str,SUBSTRING(@str,@i,1),ch)
      ,@i=PATINDEX('%[吖-做]%' COLLATE Chinese_PRC_CS_AS_KS_WS,@str)
      FROM @py
      WHERE SUBSTRING(@str,@i,1) BETWEEN hz1 AND hz2
    RETURN(@str)
    END


    调用的时候


    select [dbo].[GetPY]('你好');
    显示
    NH
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • baladin
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-04-30 23:17:5010楼 得分:0
    学习 了。。标记下备用~~~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • UltraBejing
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-01 10:08:0311楼 得分:0
    我也想知道,正在找這方面的資料~~~~~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • meiZiNick
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-01 13:36:0812楼 得分:0
    该回复于2008-05-09 11:11:31被版主删除
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • DBKING
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-01 14:34:3713楼 得分:0
    MARK
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • szhshy
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-01 15:20:1014楼 得分:0
    这个可能可用:
    namespace 空间
    {
        /// <summary>
        /// 将中文拼音首字母转成英文
        /// </summary>
        class gChineseTransform
        {
            /// <summary>
            ///  转成英文后的结果
            /// </summary>
            public string strTransform_Result="";

            /// <summary>
            /// 请传入中文字符
            /// </summary>
            /// <param name="strInput">要转换的中文字符 </param>
            public gChineseTransform(string strInput)
            {
                int iLen = strInput.Length;
                string strReVal = "";

                for (int i = 0; i < iLen; i++)
                {
                    strReVal += getSpell(strInput.Substring(i, 1));
                }
                strTransform_Result = strReVal;
            }

            /// <summary>
            /// 转换过程
            /// </summary>
            /// <param name="strNn">字符 </param>
            /// <returns> </returns>
            public string getSpell(string strNn)
            {
                byte[] arrCN = Encoding.Default.GetBytes(strNn);
                if (arrCN.Length > 1)
                {
                    int strArea = (short)arrCN[0];
                    int iPos = (short)arrCN[1];
                    int iCode = (strArea < < 8) + iPos;
                    int[] iAreacode = { 45217, 45253, 45761, 46318, 46826, 47010, 47297, 47614, 48119, 48119, 49062, 49324, 49896, 50371, 50614, 50622, 50906, 51387, 51446, 52218, 52698, 52698, 52698, 52980, 53689, 54481 };
                    for (int i = 0; i < 26; i++)
                    {
                        int iMax = 55290;
                        if (i != 25) iMax = iAreacode[i + 1];
                        if (iAreacode[i] <= iCode && iCode < iMax)
                        {
                            return Encoding.Default.GetString(new byte[] { (byte)(65 + i) });
                        }
                    }
                    return "?";
                }
                else return strNn;
            }
        }
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • itymx
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-04 10:41:4815楼 得分:0
    客户昨天也提出这个问题了!!!!!!!!!!!!!11
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • itymx
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-04 10:48:2816楼 得分:0
    返回是大写  能否为小写
    客户要的是在程序里面输入一个首字母 就返回匹配的汉字怎么办啊 大侠
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • starlessnt
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-04 10:49:3317楼 得分:0
    9楼和14楼
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • laton
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-04 10:51:3418楼 得分:0
    以前用Delphi做过一个,挺方便使用的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zccmy22
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-04 10:53:1619楼 得分:0
    引用 16 楼 itymx 的回复:
    返回是大写  能否为小写
    客户要的是在程序里面输入一个首字母 就返回匹配的汉字怎么办啊 大侠


    思路全是一样的.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • DBKING
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-04 18:14:0720楼 得分:0
    引用 16 楼 itymx 的回复:
    返回是大写  能否为小写
    客户要的是在程序里面输入一个首字母 就返回匹配的汉字怎么办啊 大侠

    在外面再套一个转小写的函数么.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • szhshy
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-27 15:44:3821楼 得分:0
    return Encoding.Default.GetString(new byte[] { (byte)(65 + i) });

    65改尤其它的好象就是小写了吧!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • etherealkite
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-27 15:54:0422楼 得分:0
    这个问题我也正在思考呢,顶一下!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • tangyong12
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-27 16:02:5423楼 得分:0
    楼上说的都可行,我这里也有一个从网上找的方法,比较大,感兴趣的朋友可以联系我我发给你。
    我们做的医院管理系统用的是拼音码,基本思路就是通过一个方法取得每种录入的费用的拼音首字母然后保存到数据库中,
    以后直接通过查找拼音码来筛选。
    我的联系方式:MSN(邮箱):tangyongtony@hotmail.com;QQ:99855188
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved