在asp.net中怎么实现拼音码查询,谢谢!!主要是用在仓库中查询货物名称用。
解决方案 »
- .net b/s 结构如何实现定时 访问数据库
- 如果捕获用户下线状态?
- myxls组件问题
- 再发100分GridView帖子!!!!!
- asp.net2.0 中 treeview控件如何 点击文字后展开下级菜
- 下拉菜单使用js脚本添加值以后没法获取的问题
- asp.net 是如何执行这个的?
- GridView默认输出的是table,如何让输出代码变为<div>。需要改那个属性?
- 第一天学ajax,关于image控件图片动态刷新的问题
- 判断objDataReader2["scAllCount"]这个scAllCount列是否存在怎么写?
- DataTable导出数据到excel后,单击页面上的一些web控件(autopostback为true)会出错
- javascript 写文件到客户端(急)
然后根据传值进行sql查询,然后绑定。。
由于一个公司的OA上用到速查编码,必须得到每个字的首字母,便于以后的查询(如:开发部,则为KFB),到网上找到了一些资料,是一个存储过程。
存储过程为:
CREATE proc LOG_FindCode
@strName nvarchar(20),
@strFindCode nvarchar(20) output
as
begin
declare @word nchar(1),@PY nvarchar(4000)
set @PY=''
while len(@strName)>0
begin
set @word=left(@strName,1)
set @PY=@PY+(case when unicode(@word) between 19968 and 19968+20901
then (select top 1 PY from (
select 'A' as PY,N'驁' as word
union all select 'B',N'簿'
union all select 'C',N'錯'
union all select 'D',N'鵽'
union all select 'E',N'樲'
union all select 'F',N'鰒'
union all select 'G',N'腂'
union all select 'H',N'夻'
union all select 'J',N'攈'
union all select 'K',N'穒'
union all select 'L',N'鱳'
union all select 'M',N'旀'
union all select 'N',N'桛'
union all select 'O',N'漚'
union all select 'P',N'曝'
union all select 'Q',N'囕'
union all select 'R',N'鶸'
union all select 'S',N'蜶'
union all select 'T',N'籜'
union all select 'W',N'鶩'
union all select 'X',N'鑂'
union all select 'Y',N'韻'
union all select 'Z',N'咗'
) T
where word>=@word collate Chinese_PRC_CS_AS_KS_WS
order by PY ASC) else @word end)
set @strName=right(@strName,len(@strName)-1)
end
set @strFindCode=@PY
end下面是把汉语传入,调用存储过程得到速查编码的方法public string GetPY(string Name)//得到速查编码
{
SqlCommand cmd=new SqlCommand();
cmd.CommandType=CommandType.StoredProcedure;//类型为存储过程
cmd.CommandText="LOG_FindCode";//已经创建好的存储过程名
cmd.Connection=con;
con.Open();
SqlParameter parName=new SqlParameter();
parName.ParameterName="@strName";
parName.SqlDbType=SqlDbType.NVarChar;
parName.Size=20;
parName.Value=Name; SqlParameter parMsg=new SqlParameter();
parMsg.ParameterName="@strFindCode";
parMsg.Direction=ParameterDirection.Output;
parMsg.SqlDbType=SqlDbType.NVarChar;
parMsg.Size=50;
cmd.Parameters.Add(parName);
cmd.Parameters.Add(parMsg); cmd.ExecuteReader();
string strFindCode=parMsg.Value.ToString();
con.Close();
return strFindCode;
}
set @PY=@PY+(case when unicode(@word) between 19968 and 19968+20901
then (select top 1 PY from (
select 'A' as PY,N'驁' as word
union all select 'B',N'簿' --N'簿' 这个是什么意思?
union all select 'C',N'錯'
union all select 'D',N'鵽'
union all select 'E',N'樲'
union all select 'F',N'鰒'
union all select 'G',N'腂'
union all select 'H',N'夻'
union all select 'J',N'攈'
union all select 'K',N'穒'
union all select 'L',N'鱳'
union all select 'M',N'旀'
union all select 'N',N'桛'
union all select 'O',N'漚'
union all select 'P',N'曝'
union all select 'Q',N'囕'
union all select 'R',N'鶸'
union all select 'S',N'蜶'
union all select 'T',N'籜'
union all select 'W',N'鶩'
union all select 'X',N'鑂'
union all select 'Y',N'韻'
union all select 'Z',N'咗'
) T where word>=@word collate Chinese_PRC_CS_AS_KS_WS
order by PY ASC) else @word end)
set @strName=right(@strName,len(@strName)-1)
end
set @strFindCode=@PY
end
public static string GetPinYin(string str1)
{
string str2="";
byte[] array = new byte [2];
for(int i=0;i<str1.Length;i++)
{
array = System.Text.Encoding.Default.GetBytes(str1[i].ToString());
int aa=array[0];
if(array[0]>=176 && array[0]<=215) //一级汉字
{
if (str1[i].ToString ().CompareTo ("匝")>=0)
str2 += "z";
else if (str1[i].ToString ().CompareTo ("压")>=0)
str2 += "y";
else if (str1[i].ToString ().CompareTo ("西")>=0)
str2 += "x";
else if (str1[i].ToString ().CompareTo ("挖")>=0)
str2 += "w";
else if (str1[i].ToString ().CompareTo ("塌")>=0)
str2 += "t";
else if (str1[i].ToString ().CompareTo ("撒")>=0)
str2 += "s";
else if (str1[i].ToString ().CompareTo ("然")>=0)
str2 += "r";
else if (str1[i].ToString ().CompareTo ("期")>=0)
str2 += "q";
else if (str1[i].ToString ().CompareTo ("啪")>=0)
str2 += "p";
else if (str1[i].ToString ().CompareTo ("哦")>=0)
str2 += "o";
else if (str1[i].ToString ().CompareTo ("拿")>=0)
str2 += "n";
else if (str1[i].ToString ().CompareTo ("妈")>=0)
str2 += "m";
else if (str1[i].ToString ().CompareTo ("垃")>=0)
str2 += "l";
else if (str1[i].ToString ().CompareTo ("喀")>=0)
str2 += "k";
else if (str1[i].ToString ().CompareTo ("击")>=0)
str2 += "j";
else if (str1[i].ToString ().CompareTo ("哈")>=0)
str2 += "h";
else if (str1[i].ToString ().CompareTo ("噶")>=0)
str2 += "g";
else if (str1[i].ToString ().CompareTo ("发")>=0)
str2 += "f";
else if (str1[i].ToString ().CompareTo ("蛾")>=0)
str2 += "e";
else if (str1[i].ToString ().CompareTo ("搭")>=0)
str2 += "d";
else if (str1[i].ToString ().CompareTo ("擦")>=0)
str2 += "c";
else if (str1[i].ToString ().CompareTo ("芭")>=0)
str2 += "b";
else if (str1[i].ToString ().CompareTo ("啊")>=0)
str2 += "a";
}
else if(array[0]>=97 && array[0]<=122)
{//小写
str2+=str1[i].ToString();
}
else if(array[0]>=65 && array[0]<=90)
{//大写
str2+=str1[i].ToString();
}
else if(array[0]>=215) //二级汉字
{
//str2 += ls_second_eng.Substring (ls_second_ch.IndexOf (str1[i].ToString (),0),1);
if (str1[i].ToString ().CompareTo ("匝")>=0)
str2 += "z";
else if (str1[i].ToString ().CompareTo ("压")>=0)
str2 += "y";
else if (str1[i].ToString ().CompareTo ("西")>=0)
str2 += "x";
else if (str1[i].ToString ().CompareTo ("挖")>=0)
str2 += "w";
else if (str1[i].ToString ().CompareTo ("塌")>=0)
str2 += "t";
else if (str1[i].ToString ().CompareTo ("撒")>=0)
str2 += "s";
else if (str1[i].ToString ().CompareTo ("然")>=0)
str2 += "r";
else if (str1[i].ToString ().CompareTo ("期")>=0)
str2 += "q";
else if (str1[i].ToString ().CompareTo ("啪")>=0)
str2 += "p";
else if (str1[i].ToString ().CompareTo ("哦")>=0)
str2 += "o";
else if (str1[i].ToString ().CompareTo ("拿")>=0)
str2 += "n";
else if (str1[i].ToString ().CompareTo ("妈")>=0)
str2 += "m";
else if (str1[i].ToString ().CompareTo ("垃")>=0)
str2 += "l";
else if (str1[i].ToString ().CompareTo ("喀")>=0)
str2 += "k";
else if (str1[i].ToString ().CompareTo ("击")>=0)
str2 += "j";
else if (str1[i].ToString ().CompareTo ("哈")>=0)
str2 += "h";
else if (str1[i].ToString ().CompareTo ("噶")>=0)
str2 += "g";
else if (str1[i].ToString ().CompareTo ("发")>=0)
str2 += "f";
else if (str1[i].ToString ().CompareTo ("蛾")>=0)
str2 += "e";
else if (str1[i].ToString ().CompareTo ("搭")>=0)
str2 += "d";
else if (str1[i].ToString ().CompareTo ("擦")>=0)
str2 += "c";
else if (str1[i].ToString ().CompareTo ("芭")>=0)
str2 += "b";
else if (str1[i].ToString ().CompareTo ("啊")>=0)
str2 += "a";
}
}
return str2.ToUpper();}