zoukankan      html  css  js  c++  java
  • 根据分隔符的位置获取值

    GO
    IF EXISTS(SELECT 1 FROM SYSOBJECTS WHERE ID=OBJECT_ID('fn_GetValueBySepPos') AND XTYPE='FN')
    BEGIN
        DROP FUNCTION dbo.fn_GetValueBySepPos
    END
    GO
    --功能:根据分隔符的位置获取值
    --参数:@String 输入的字符串;@Sep 分隔符(默认为逗号);@Pos 分隔符的位置(默认为第一个分隔符);@BeforeOrAfter  (0 表示前面,1表示后面)取指定位置分隔符前面(后面)的字符串(默认取分隔符前面的字符串)
    CREATE FUNCTION dbo.fn_GetValueBySepPos
    (
        @String VARCHAR(MAX),
        @Sep VARCHAR(10),
        @Pos INT,
        @BeforeOrAfter INT
    )
    RETURNS VARCHAR(MAX)
    AS 
    BEGIN
        DECLARE @Result VARCHAR(MAX)
        SELECT @Result = '',@String = ISNULL(@String,''),@Sep = ISNULL(@Sep,','),@Pos = ISNULL(@Pos,1),@BeforeOrAfter=ISNULL(@BeforeOrAfter,0)
        
        IF @String = ''
            BEGIN
                RETURN @Result
            END
        
        DECLARE @temp TABLE
        (
            Rn INT IDENTITY(1,1),
            Value VARCHAR(MAX)
        )
        INSERT INTO @temp( Value )    
        SELECT Value 
        FROM dbo.fn_Split1(@String,@Sep)
        
        IF @BeforeOrAfter=0
            BEGIN
                --前面
                SELECT @Result = STUFF((SELECT TOP (@Pos) @Sep + Value FROM @temp ORDER BY Rn ASC FOR XML PATH('')),1,1,'')
            END
        ELSE
            BEGIN
                --后面
                SELECT @Result = STUFF((SELECT TOP (@Pos) @Sep + Value FROM @temp ORDER BY Rn DESC FOR XML PATH('')),1,1,'')
            END
        
        RETURN @Result
    END
    GO
  • 相关阅读:
    python zip()函数转置表,操作列
    python 集合 无序非重 容器的操作
    前行
    工作读书放松: 做其他事情 1.运动(如焦),2.闭眼睡觉休息(如蔡),3.选择读其他书
    心在哪时间在哪路在哪
    vi全部替换
    选择
    知识 代码 算法
    code algorithm
    绕过CND查找真是IP地址
  • 原文地址:https://www.cnblogs.com/KingUp/p/5722491.html
Copyright © 2011-2022 走看看