小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

拼音處理

 qzg589 2005-09-09

拼音處理

[日期:2005-07-08] 來源:CSDN  作者: [字體: ]

/*-1.-獲得漢字字符串的首字母

   根據(jù)大力的貼子改成.將大力的兩個函數(shù)合并成了一個函數(shù).
   可以應(yīng)用于助記碼的查詢
--*/
if exists (select * from dbo.sysobjects where id = object_id(N‘[dbo].[fGetPy]‘) and xtype in (N‘FN‘, N‘IF‘, N‘TF‘))
drop function [dbo].[fGetPy]
GO

--創(chuàng)建取拼音函數(shù)
create function fGetPy(@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 ‘發(fā)‘
     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=‘a(chǎn)‘
  set @return=@return+@c
 end
 return(@return)
end

go
--測試
select dbo.fgetpy(‘東莞市‘) as 東莞市,dbo.fgetpy(‘a(chǎn)b中c國人‘) as 中國人

--刪除拼音函數(shù)
drop function fgetpy

 



/*2.--獲得漢字拼音的函數(shù)

  需要創(chuàng)建一個拼音表,包含所有漢字的發(fā)音,這個可以通過轉(zhuǎn)換全拼輸入法的編碼庫得到,這里僅舉了一個簡單的例子.
--*/

--創(chuàng)建漢字拼音庫
create table YingShe(CHR  char(2),PY varchar(10))
insert YingShe
select ‘長‘,‘chang‘
 union all select ‘長‘,‘zhang‘
 union all select ‘城‘,‘cheng‘
 union all select ‘科‘,‘kel‘
 union all select ‘技‘,‘ji‘
 union all select ‘金‘,‘jin‘
 union all select ‘立‘,‘li‘
 union all select ‘章‘,‘zhang‘
 union all select ‘公‘,‘gong‘
 union all select ‘司‘,‘si‘

/*--下面是兩個函數(shù),一個以表的形式返回某個字符串的全部拼音,一個返回某某個字符串的其中一個拼音
--*/

--獲取漢字拼音的函數(shù)--返回所有的拼音
create function f_getpy_tb(@str varchar(100))
returns @tb table(re varchar(8000))
as
begin
declare @re table(id int,re varchar(8000))  --數(shù)據(jù)處理中間表

declare @i int,@ilen int,@splitchr varchar(1)
select @splitchr=‘ ‘ --兩個拼音之間的分隔符(目的是為了通用性考慮)
 ,@i=1,@ilen=len(@str)

insert into @re select @i,py from YingShe where chr=substring(@str,@i,1)
while @i<@ilen
begin
 set @i=@i+1
 insert into @re select @i,re+@splitchr+py from @re a,YingShe b
  where a.id=@i-1 and b.chr=substring(@str,@i,1)
end

insert into @tb select re from @re where id=@i
return
end
go

--獲取漢字拼音的函數(shù)--返回漢字的某一個拼音
create function f_getpy(@str varchar(100))
returns varchar(8000)
as
begin
declare @re varchar(8000)

declare @i int,@ilen int,@splitchr varchar(1)
select @splitchr=‘ ‘ --兩個拼音之間的分隔符(目的是為了通用性考慮)
 ,@i=1,@ilen=len(@str)

select @re=py from YingShe where chr=substring(@str,@i,1)
while @i<@ilen
begin
 set @i=@i+1
 select top 1 @re=@re+@splitchr+py
 from YingShe where chr=substring(@str,@i,1)
end

return(@re)
end
go

--測試
--返回‘長城‘的所有可能拼音
select * from dbo.f_getpy_tb(‘長城‘)

--返回‘長城‘的拼音
select  dbo.f_getpy(‘長城‘)

--刪除拼音函數(shù)
drop function f_getpy,f_getpy_tb

 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多