主要是为了模糊查询做 铺垫,例如输入a就可以出现与之对应的汉字。(想要这个代码的可以留言下,我的模糊查询主要是建一个字段装汉字的拼音首字母,用的时候后台代码
,这只是我的解决方案,其他的sql语句 解决方案,大家可以百度下)
本文主要是解决:将几千条的数据转为拼音首字保存在另一个字段里,为了模糊查询做 铺垫。
写一个例子吧:
你现在有一个表例如:TEST001,里面有几千条数据,一个字段名为:mc,mc的数据都为汉字,你想模糊查询。
这一堆数据,又不好一个一个写mc的拼音首字母,那么下面的就值得你去看了!
首先,在你的表里新建一个字段例如:pym,
然后建一个简单的页面:
html:
<div>
<asp:Button ID="Button1" runat="server" Text="插入数据汉字首字母" OnClick="Button1_Click1" />
</div>
cs:
protected void Button1_Click1(object sender, EventArgs e)
{
string strSQL;
strSQL = "select mc from TEST001";
IDataReader dr = dac.DataReaderQuery(strSQL);
while (dr.Read())
{
string mc=dr["mc"].ToString();
string pym = StrToPinyin.GetChineseSpell(mc);
if (pym.Length > 6)
{
pym = pym.Substring(0, 6);//我这里只去了6位,大家可以看自己爱好而定!
}
string updateSql = "update TEST001 set pym ='" + pym + "' where mc='" + mc + "'";
dac.update(updateSql);
}
dr.Close();
Response.Write("<script>alert('操作成功!');</script>");
}
StrToPinyin 类的GetChineseSpell方法:
public static string GetChineseSpell(string strText)
{
if (strText == null || strText.Length == 0)
return strText;
System.Text.StringBuilder myStr = new System.Text.StringBuilder();
foreach (char vChar in strText)
{
// 若不是汉字则直接输出
if ((int)vChar < 19968 || (int)vChar > 40869)
{
myStr.Append(char.ToUpper(vChar));
}
else if ((int)vChar >= 19968 && (int)vChar <= 40869)
{
// 若字符Unicode编码在编码范围则 查汉字列表进行转换输出
foreach (string strList in strChineseCharList)
{
if (strList.IndexOf(vChar) > 0)
{
myStr.Append(strList[0]);
break;
}
}
}
}
return myStr.ToString();
}
就这样几千条汉字mc的pym都有了,数据多的话,可能要些时间,有错误的地方还请斧正!
铺垫 模糊查询 转千条数据为拼音并保存
TAG: