집 >데이터 베이스 >MySQL 튜토리얼 >한자를 병음의 첫 글자로 변환하는 매우 효율적인 기능
시나리오:
사용자가 입력한 이름 키워드로 사용자를 검색해야 합니다. 사용자는 사용자를 검색하기 위해 키워드 'x'를 입력합니다(데이터는 테이블 [이름 필드] 또는 메모리 [목록
요구 사항:
결과 정렬은 다음과 같습니다. be :
x
xia
xiao
yx
즉,
x 문자가 포함된 결과가 표시되어야 합니다.
첫 번째 문자와 일치하는 결과가 먼저 표시되어야 합니다. (예: 시작 부분의 x)
동일한 조건 2에서는 짧은 결과가 먼저 순위가 지정되어야 합니다. (예: x가 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>'z' select @n = @n +1 ,@c = case chn when @chn then char(@n) else @c end from( select top 27 * from ( select chn = '吖' union all select '八' union all select '嚓' union all select '咑' union all select '妸' union all select '发' union all select '旮' union all select '铪' union all select '丌' --because have no 'i' union all select '丌' union all select '咔' union all select '垃' union all select '嘸' union all select '拏' union all select '噢' union all select '妑' union all select '七' union all select '呥' union all select '仨' union all select '他' union all select '屲' --no 'u' union all select '屲' --no 'v' union all select '屲' union all select '夕' union all select '丫' union all select '帀' 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