取汉字汉语拼音首字母的函数
-------------------------------------------------------------------------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 order by case Name when '其他' then 1 else 0 end,dbo.f_GetPy(Name)

解决方案 »

  1.   

    有这样一个函数:soundex(),你可以试一下
      

  2.   

    yes. 可参考www.ddvip.net 的sql server 部分
      

  3.   

    我现在用的是Access
    表是这样的,
    id    name
    ------------------
    1     AAA
    2     BBB
    3     CCC
    -------------------
    我现在要按name的读音排序,这个SQL该怎么写呀!
    小弟比较苯,多指教指教.............谢谢!
      

  4.   

    select * from tt
    order by soundex(name)
    看看行不
      

  5.   

    access默认就是按拼音排序的
    当然也可选按笔画排序
      

  6.   

    还是不行呀,它说soundex这个函数没有定义
      

  7.   

    是默认就是按音序排的?那我直接order by(name)就可以了是吧yesyesyes