谁有取汉字拼音的sql函数?

解决方案 »

  1.   

    百度一下.几千万个.--2. 汉字首字母查询处理用户定义函数
    CREATE FUNCTION f_GetPY(@str nvarchar(4000))
    RETURNS nvarchar(4000)
    AS
    BEGIN
    DECLARE @py TABLE(
    ch char(1),
    hz1 nchar(1) COLLATE Chinese_PRC_CS_AS_KS_WS,
    hz2 nchar(1) COLLATE Chinese_PRC_CS_AS_KS_WS)
    INSERT @py SELECT 'A',N'吖',N'鏊'
    UNION  ALL SELECT 'B',N'八',N'簿'
    UNION  ALL SELECT 'C',N'嚓',N'错'
    UNION  ALL SELECT 'D',N'哒',N'跺'
    UNION  ALL SELECT 'E',N'屙',N'贰'
    UNION  ALL SELECT 'F',N'发',N'馥'
    UNION  ALL SELECT 'G',N'旮',N'过'
    UNION  ALL SELECT 'H',N'铪',N'蠖'
    UNION  ALL SELECT 'J',N'丌',N'竣'
    UNION  ALL SELECT 'K',N'咔',N'廓'
    UNION  ALL SELECT 'L',N'垃',N'雒'
    UNION  ALL SELECT 'M',N'妈',N'穆'
    UNION  ALL SELECT 'N',N'拿',N'糯'
    UNION  ALL SELECT 'O',N'噢',N'沤'
    UNION  ALL SELECT 'P',N'趴',N'曝'
    UNION  ALL SELECT 'Q',N'七',N'群'
    UNION  ALL SELECT 'R',N'蚺',N'箬'
    UNION  ALL SELECT 'S',N'仨',N'锁'
    UNION  ALL SELECT 'T',N'他',N'箨'
    UNION  ALL SELECT 'W',N'哇',N'鋈'
    UNION  ALL SELECT 'X',N'夕',N'蕈'
    UNION  ALL SELECT 'Y',N'丫',N'蕴'
    UNION  ALL SELECT 'Z',N'匝',N'做'
    DECLARE @i int
    SET @i=PATINDEX('%[吖-做]%' COLLATE Chinese_PRC_CS_AS_KS_WS,@str)
    WHILE @i>0
    SELECT @str=REPLACE(@str,SUBSTRING(@str,@i,1),ch)
    ,@i=PATINDEX('%[吖-做]%' COLLATE Chinese_PRC_CS_AS_KS_WS,@str)
    FROM @py
    WHERE SUBSTRING(@str,@i,1) BETWEEN hz1 AND hz2
    RETURN(@str)
    END
    GO
      

  2.   


    Create  function fun_getPY
     (
        @str nvarchar(4000)
     )
    returns nvarchar(4000)
    as
    begin   declare @word nchar(1),@PY nvarchar(4000)   set @PY=''   while len(@str)>0
      begin
        set @word=left(@str,1)     --如果非汉字字符,返回原字符
        set @PY=@PY+(case when unicode(@word) between 19968 and 19968+20901
                   then (
                                select top 1 PY
                                from
                                (
                                 select 'A' as PY,N'驁' as word
                                 union all select 'B',N'簿'
                                 union all select 'C',N'錯'
                         union all select 'D',N'鵽'
                         union all select 'E',N'樲'
                         union all select 'F',N'鰒'
                         union all select 'G',N'腂'
                         union all select 'H',N'夻'
                         union all select 'J',N'攈'
                         union all select 'K',N'穒'
                         union all select 'L',N'鱳'
                         union all select 'M',N'旀'
                         union all select 'N',N'桛'
                         union all select 'O',N'漚'
                         union all select 'P',N'曝'
                         union all select 'Q',N'囕'
                         union all select 'R',N'鶸'
                         union all select 'S',N'蜶'
                         union all select 'T',N'籜'
                         union all select 'W',N'鶩'
                         union all select 'X',N'鑂'
                         union all select 'Y',N'韻'
                         union all select 'Z',N'咗'
                          ) T
                       where word>=@word collate Chinese_PRC_CS_AS_KS_WS
                       order by PY ASC
                              )
                          else @word
                     end)
        set @str=right(@str,len(@str)-1)
      end   return @PY end
      

  3.   

    最简单的办法,建立一个汉字一拼音对照表,因为对于国标汉字来说,一级字库按拼音排序,二级字库按部首排序,想通过按顺序读取等方法来自动获取拼音是不现实的(顶多对一级字库有效,还有同音字问题),当然,对照表是不能手工做的,用输入法生成器逆转换一下全拼的码表,然后导入数据库,慢慢做吧,做好后你所有软件都能用了,如果只想用拼音首字母,我有现成的,在ftp://202.107.251.26上的一个excel文件,导到你数据库中,建一个索引就可以查询了
      

  4.   


    那就只能是TTS来完成了~!