荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: baty (新一代懒人), 信区: Database
标  题: [原创]汉字拼音首字检索-Sql_Server(转载)
发信站: 荔园晨风BBS站 (Thu Oct 25 23:03:38 2001), 转信

--获取单个汉字的首字
CREATE FUNCTION fGetPyChar (@iHanZi  VARCHAR(2)) RETURNS VARCHAR(10)
AS
  BEGIN
    DECLARE  @sRet VARCHAR(10)
    DECLARE  @nHanZi  INT
 SET @nHanZi = ASCII(SUBSTRING(@iHanZi,1,1))*257
 IF( (@nHanZi>=dbo.fHexToINT('B0A1')) AND( @nHanZi<=dbo.
fHexToINT('B0C4')) )
               SET @sRet = 'A'
 IF @nHanZi>=dbo.fHexToINT('B0C5') AND @nHanZi<=dbo.fHexToINT('B2C0')
           SET @sRet = 'B'
 IF @nHanZi>=dbo.fHexToINT('B2C1') AND @nHanZi<=dbo.fHexToINT('B4ED')
           SET @sRet = 'C'
 IF @nHanZi>=dbo.fHexToINT('B4EE') AND @nHanZi<=dbo.fHexToINT('B6E9')
           SET @sRet = 'D'
 IF @nHanZi>=dbo.fHexToINT('B6EA') AND @nHanZi<=dbo.fHexToINT('B7A1')
           SET @sRet = 'E'
 IF @nHanZi>=dbo.fHexToINT('B7A2') AND @nHanZi<=dbo.fHexToINT('B8C0')
           SET @sRet = 'F'
 IF @nHanZi>=dbo.fHexToINT('B8C1') AND @nHanZi<=dbo.fHexToINT('B9FD')
           SET @sRet = 'G'
 IF @nHanZi>=dbo.fHexToINT('B9FE') AND @nHanZi<=dbo.fHexToINT('BBF6')
           SET @sRet = 'H'
 IF @nHanZi>=dbo.fHexToINT('BBF7') AND @nHanZi<=dbo.fHexToINT('BFA5')
           SET @sRet = 'J'
 IF @nHanZi>=dbo.fHexToINT('BFA6') AND @nHanZi<=dbo.fHexToINT('C0AB')
           SET @sRet = 'K'
 IF @nHanZi>=dbo.fHexToINT('C0AC') AND @nHanZi<=dbo.fHexToINT('C2E7')
           SET @sRet = 'L'
 IF @nHanZi>=dbo.fHexToINT('C2E8') AND @nHanZi<=dbo.fHexToINT('C4C2')
           SET @sRet = 'M'
 IF @nHanZi>=dbo.fHexToINT('C4C3') AND @nHanZi<=dbo.fHexToINT('C5B5')
           SET @sRet = 'N'
 IF @nHanZi>=dbo.fHexToINT('C5B6') AND @nHanZi<=dbo.fHexToINT('C5BD')
           SET @sRet = 'O'
 IF @nHanZi>=dbo.fHexToINT('C5BE') AND @nHanZi<=dbo.fHexToINT('C6D9')
           SET @sRet = 'P'
 IF @nHanZi>=dbo.fHexToINT('C6DA') AND @nHanZi<=dbo.fHexToINT('C8BA')
           SET @sRet = 'Q'
 IF @nHanZi>=dbo.fHexToINT('C8BB') AND @nHanZi<=dbo.fHexToINT('C8F5')
           SET @sRet = 'R'
 IF @nHanZi>=dbo.fHexToINT('C8F6') AND @nHanZi<=dbo.fHexToINT('CBF9')
           SET @sRet = 'S'
 IF @nHanZi>=dbo.fHexToINT('CBFA') AND @nHanZi<=dbo.fHexToINT('CDD9')
           SET @sRet = 'T'
 IF @nHanZi>=dbo.fHexToINT('CDDA') AND @nHanZi<=dbo.fHexToINT('CEF3')
           SET @sRet = 'W'
 IF @nHanZi>=dbo.fHexToINT('CEF4') AND @nHanZi<=dbo.fHexToINT('D1B8')
           SET @sRet = 'X'
 IF @nHanZi>=dbo.fHexToINT('D1B9') AND @nHanZi<=dbo.fHexToINT('D4D0')
           SET @sRet = 'Y'
 IF @nHanZi>=dbo.fHexToINT('D4D1') AND @nHanZi<=dbo.fHexToINT('D7F9')
           SET @sRet = 'Z'
  RETURN( @sRet )
END
--获取汉字词组的拼音首字
CREATE FUNCTION fGetPyStr(@iHanzi  VARCHAR(40)) RETURNS VARCHAR(20)
AS
BEGIN
  DECLARE @sRet VARCHAR(20)
  DECLARE @nBegin INT
  DECLARE @nHanZi INT
 SET @sRet = ''
 SET @nBegin = 1
 while @nBegin<=LEN(@iHanzi)
               BEGIN
  SET @nHanZi = ASCII(SUBSTRING(@iHanzi,@nBegin,1))*257
  IF @nHanZi >= dbo.fHexToINT('B0A1')
                      BEGIN
   SET @sRet = @sRet + dbo.fGetPyChar(SUBSTRING(@iHanzi,@nBegin,1 ))
   SET @nBegin = @nBegin + 1
                      END
  ELSE
                      BEGIN
   SET @sRet = @sRet+UPPER(SUBSTRING(@iHanzi,@nBegin,1 ) )
   SET @nBegin = @nBegin + 1
                      END
                CONTINUE
               END
  RETURN(@sRet)
END
--将16进制转化成10进制
CREATE FUNCTION fHexToINT ( @iHex VARCHAR(20) )  RETURNS  INT
AS
BEGIN
     DECLARE @sChar VARCHAR
     DECLARE @nNum INT
     DECLARE @nHex INT
     DECLARE @I INT
        SET @nNum = 0
        SET @I=1
 WHILE @I<=LEN(@iHex)
             BEGIN
  SET @sChar = SUBSTRING(UPPER(@iHex),@i,1)
     IF @sChar<='9'
                        BEGIN
                          SET @nHex = CAST((@sChar) AS INT)
                        END
           ELSE
                          BEGIN
     SET @nHex = ASCII(@sChar) - 55
                            END
           SET @nNum = @nNum * 16 + @nHex
                    SET @I=@I+1
     CONTINUE
              END
     Return( @nNum)
     END

--
     来 人
      Welcome to Sunrise!

             我总有一种想为你而死的冲动

                          因为我不知如何才能把你打动

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.1.242]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店