Heim >Datenbank >MySQL-Tutorial >Eine sehr effiziente Funktion, die chinesische Schriftzeichen in den Anfangsbuchstaben von Pinyin umwandelt

Eine sehr effiziente Funktion, die chinesische Schriftzeichen in den Anfangsbuchstaben von Pinyin umwandelt

大家讲道理
大家讲道理Original
2016-11-10 11:22:021930Durchsuche

Szenario:

Sie müssen nach Benutzern anhand der vom Benutzer eingegebenen Namensschlüsselwörter suchen. Der Benutzer gibt das Schlüsselwort „x“ ein, um nach Benutzern zu suchen (die Daten stammen aus der Tabelle [Namensfeld] oder dem Speicher [Liste])

Anforderungen:

Die resultierende Sortierung sollte sei :

  • x

  • xia

  • xiao

  • yx

Das heißt:

Die Ergebnisse, die den Buchstaben x enthalten, sollten angezeigt werden.

Die Ergebnisse, die mit dem ersten Buchstaben übereinstimmen, sollten an erster Stelle stehen (z. B. x am Anfang)

Unter der gleichen Bedingung 2 sollte das kürzere Ergebnis an erster Stelle stehen (z. B. steht x vor xia)

create function [dbo].[fn_getpy2](@Str varchar(500)='')
returns varchar(500)
as
begin
 declare @strlen int,@return varchar(500),@ii int
 declare @n int,@c char(1),@chn nchar(1)

 select @strlen=len(@str),@return='',@ii=0
 set @ii=0
 while @ii<@strlen
 begin
  select @ii=@ii+1,@n=63,@chn=substring(@str,@ii,1)
  if @chn>&#39;z&#39;
  select @n = @n +1
     ,@c = case chn when @chn then char(@n) else @c end
   from(
    select top 27 * from (
     select chn = &#39;吖&#39;
     union all select &#39;八&#39;
     union all select &#39;嚓&#39;
     union all select &#39;咑&#39;
     union all select &#39;妸&#39;
     union all select &#39;发&#39;
     union all select &#39;旮&#39;
     union all select &#39;铪&#39;
     union all select &#39;丌&#39;  --because have no &#39;i&#39;
     union all select &#39;丌&#39;
     union all select &#39;咔&#39;
     union all select &#39;垃&#39;
     union all select &#39;嘸&#39;
     union all select &#39;拏&#39;
     union all select &#39;噢&#39;
     union all select &#39;妑&#39;
     union all select &#39;七&#39;
     union all select &#39;呥&#39;
     union all select &#39;仨&#39;
     union all select &#39;他&#39;
     union all select &#39;屲&#39;  --no &#39;u&#39;
     union all select &#39;屲&#39;  --no &#39;v&#39;
     union all select &#39;屲&#39;
     union all select &#39;夕&#39;
     union all select &#39;丫&#39;
     union all select &#39;帀&#39;
     union all select @chn) as a
    order by chn COLLATE Chinese_PRC_CI_AS 
   ) as b
  else set @c=@chn
  set @return=@return+@c
 end
 return(@return)
end


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn