zoukankan      html  css  js  c++  java
  • sql server 标量值函数

    例1:

    ALTER FUNCTION [dbo].[ConvertToPinYin](@source [nvarchar](4000))

    RETURNS [nvarchar](4000) WITH EXECUTE AS CALLER

    ASEXTERNAL NAME [Job88.FullTextSearch.DataSourceFormatter].[Job88.FullTextSearch.DataSourceFormatter.Func_FormatFieldValue].[ConvertToPinYin]

    例2:

    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go


    /*
    SELECT dbo.Func_GetPinYinExt('中/国/人')
    */
    ALTER FUNCTION [dbo].[Func_GetPinYinExt]
    (
        @source nvarchar(4000)
    )
    RETURNS nvarchar(4000)
    AS
    BEGIN
    --    DECLARE @source nvarchar(4000)
    --    SET @source = '(中国/人民)'

        DECLARE @pinyin 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 INTO @pinyin (ch, hz1, hz2)
        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, @j int, @isSplitChar bit, @isFirstChar bit
        SET @i = PATINDEX('%[吖-做]%' COLLATE Chinese_PRC_CS_AS_KS_WS, @source)
        WHILE @i > 0
        BEGIN
            SELECT
                @source = REPLACE(@source, SUBSTRING(@source, @i, 1), ch)
                ,@i = PATINDEX('%[吖-做]%' COLLATE Chinese_PRC_CS_AS_KS_WS, @source)
            FROM @pinyin
            WHERE SUBSTRING(@source, @i, 1) BETWEEN hz1 AND hz2
        END

        --SELECT (@source)

        DECLARE @returnString nvarchar(4000)
        SET @j = PATINDEX('%[A-Z]%', @source)
        SET @returnString = SUBSTRING(@source, @j, 1)

        SET @i = CHARINDEX('/', @source)
        --SELECT @i
        WHILE @i > 0
        BEGIN
            SET @source = SUBSTRING(@source, @i + 1, LEN(@source) - @i)
            SET @j = PATINDEX('%[A-Z]%', @source)
            SET @returnString = @returnString + '/' + SUBSTRING(@source, @j, 1)

            SET @i = CHARINDEX('/', @source)
        END

        --SELECT @returnString

        RETURN (@returnString)
    END

     

  • 相关阅读:
    Navicat建表MySQL索引类型
    Feign调用全局异常处理解决
    ShardingJDBC、Mycat、drds对比
    MySQL之索引失效分析及优化相关
    SpringBoot2.X集成spring session redis实现session共享
    Redis的消息订阅/发布 Utils工具类
    MySQL索引类型区分
    handler使用(二)
    Android开发指南中文版(七)Content Providers
    Android消息处理(一)进程内通信
  • 原文地址:https://www.cnblogs.com/ylemzhang/p/1713684.html
Copyright © 2011-2022 走看看