zoukankan      html  css  js  c++  java
  • SQL获取汉字首字母

    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
    
    update BY_CustomerContacter Set Initials=upper(substring(dbo.f_GetPy(ContacterName), 1, 1))
    update BY_SupplierContacter Set Initials=upper(substring(dbo.f_GetPy(ContacterName), 1, 1))
    
    drop function dbo.f_GetPy
    
    select Initials,ContacterName,Id from BY_CustomerContacter order by Initials asc
    select Initials,ContacterName,Id from BY_SupplierContacter order by Initials asc
  • 相关阅读:
    bzoj4196: [Noi2015]软件包管理器
    bzoj3992: [SDOI2015]序列统计
    bzoj 4178: A
    Spoj 8372 Triple Sums
    hdu contest day1 1007 Tricks Device
    hdu contest day1 1002 Assignment
    2018暑期生活指导第三周
    2018暑期生活指导第二周
    《大道至简》阅读笔记
    2018暑期生活指导第一周
  • 原文地址:https://www.cnblogs.com/deep-blue/p/5110051.html
Copyright © 2011-2022 走看看