按首字母查询中文问题。
如题,请高手指教:   
 比如我现在有一个信息库,内存储用户名及一些其它住处。   
 现在的需求是,输入比如:ZS进行模糊查询,查询过程中可以查询到,张山,张三,张栅,张珊,张三风,张山枫等。   
 大家有何好办法吗?
------解决方案--------------------没有人帮忙啊。自己顶起。。大家帮忙啊。。。
------解决方案--------------------那输入zhsh呢? 
 是张(zhang)使(shi) 
 还是张(zhang)思(si)和(he) 
 还是藏(zang)和(he)使(shi) 
 还是藏(zang)和(he)思(si)和(he)   
 呵呵
------解决方案--------------------把每个字的首字母跟汉字做成hash表 
 首字母1----汉字1 
 首字母1----汉字2 
 首字母1----汉字2 
 首字母1----汉字2 
 首字母1----汉字2 
 或者做成表就行,两个表,一个是首字母,一个是汉字的编码。反正是1:n的关系
------解决方案--------------------同意這樣的做法,配合ajax自動完成功能
------解决方案----------------------SQL Server 2000数据库的解决方案: 
 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 
 --调用 
 select * from a where dbo.f_GetPy(Name) like  'ZS% '
------解决方案--------------------顶一下。
------解决方案--------------------CREATE TRIGGER aa ON dbo.ccccc 
 FOR INSERT, UPDATE, DELETE  
 AS 
 update ccc set pinyin=dbo.F_GetHelpCode(b.name) 
 	from ccc a,inserted b 
 	where a.code=b.code     
 CREATE FUNCTION F_GetHelpCode ( 
 	@cName VARCHAR(50) ) 
 RETURNS VARCHAR(20) 
 AS 
 BEGIN 
    DECLARE @i SMALLINT, @L SMALLINT , @cHelpCode VARCHAR(20), @e VARCHAR(20), @iAscii SMALLINT 
    SELECT @i=1, @L=0 , @cHelpCode= ' ' 
    while @L <=20 AND @i <=LEN(@cName) BEGIN 
       SELECT @e=LOWER(SUBSTRING(@cname,@i,1)) 
       SELECT @iAscii=ASCII(@e) 
       IF @iAscii> =48 AND @iAscii  <=57 OR @iAscii> =97 AND @iAscii  <=122 or @iAscii=95  
        SELECT @cHelpCode=@cHelpCode  +@e 
       ELSE 
       IF @iAscii> =176 AND @iAscii  <=247 
             SELECT @cHelpCode=@cHelpCode  + dbo.f_ch2py(@e) 
         ELSE SELECT @L=@L-1