zoukankan      html  css  js  c++  java
  • SQLServer编写自己的切分函数 SPLIT和带排序的切割函数 SPLITSort

    一、SPLIT函数

    CREATE FUNCTION [dbo].[SPLIT] ( @StringToSplit VARCHAR(MAX),@SplitDelim VARCHAR(10) )
    RETURNS
     @SplitStringTable TABLE (KpiCode nvarchar(MAX) NOT NULL)
    AS
    BEGIN
    
     DECLARE @SplitEndPos int
     DECLARE @SplitValue nvarchar(MAX)
     DECLARE @SplitStartPos int = 1
    
    SET @SplitEndPos = CHARINDEX(@SplitDelim, @StringToSplit, @SplitStartPos)
    
    WHILE @SplitEndPos > 0
    BEGIN
        SET @SplitValue = SUBSTRING(@StringToSplit, @SplitStartPos, (@SplitEndPos - @SplitStartPos))
        INSERT @SplitStringTable (KpiCode) VALUES (@SplitValue)
        SET @SplitStartPos = @SplitEndPos + 1
        SET @SplitEndPos = CHARINDEX(@SplitDelim, @StringToSplit, @SplitStartPos)
    END
    
    SET @SplitValue = SUBSTRING(@StringToSplit, @SplitStartPos, 2147483647)
    INSERT @SplitStringTable (KpiCode) VALUES(@SplitValue)
    
    
     RETURN
    END

    示例:

    select * from [dbo].[SPLIT]('a,b,c',',')

    二、SPLITSort

    CREATE FUNCTION [dbo].[SPLITSort] ( @StringToSplit VARCHAR(MAX),@SplitDelim VARCHAR(10) )
    RETURNS
     @SplitStringTable TABLE (KpiCode nvarchar(MAX) NOT NULL,Sort int)
    AS
    BEGIN
    
     DECLARE @SplitEndPos int
     DECLARE @SplitValue nvarchar(MAX)
     DECLARE @SplitStartPos int = 1
     
     DECLARE @sort int=0;
    
    SET @SplitEndPos = CHARINDEX(@SplitDelim, @StringToSplit, @SplitStartPos)
    
    WHILE @SplitEndPos > 0
    BEGIN
        SET @sort=@sort+1;
        SET @SplitValue = SUBSTRING(@StringToSplit, @SplitStartPos, (@SplitEndPos - @SplitStartPos))
        INSERT @SplitStringTable (KpiCode,Sort) VALUES (@SplitValue,@sort)
        SET @SplitStartPos = @SplitEndPos + 1
        SET @SplitEndPos = CHARINDEX(@SplitDelim, @StringToSplit, @SplitStartPos)
    END
    
    SET @SplitValue = SUBSTRING(@StringToSplit, @SplitStartPos, 2147483647)
    SET @sort=@sort+1;
    INSERT @SplitStringTable (KpiCode,Sort) VALUES(@SplitValue,@sort)
    
    
     RETURN
    END

     示例:

    select * from [dbo].[SPLITSort]('a,b,c',',')

  • 相关阅读:
    ubuntu root 登录没有声音(waiting for sound system to respond)
    android openVG source prj
    http://source.android.com/ android官网(下载源码及sdk)
    8个优秀的Android开源游戏引擎
    2010開放原始碼創新應用開發大賽 (有很好的源码)
    GIT和repo使用方法:下载内核 android源码包
    Real6410系列教程 android
    [转]Protel布局文件转化为Allegro placement文件
    ubuntu网卡设置
    ubuntu 下安装java6的源
  • 原文地址:https://www.cnblogs.com/life512/p/9364325.html
Copyright © 2011-2022 走看看