zoukankan      html  css  js  c++  java
  • sqlserver分隔字符串

    USE [BooksBrothersWebOrder]
    GO
    /****** Object:  UserDefinedFunction [dbo].[FX_Split]    Script Date: 08/13/2012 09:28:51 ******/
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER FUNCTION [dbo].[FX_Split]
    (
     @SplitString varchar(8000),-- 需要分隔的字符串
     @Separator varchar(2)  --分隔符哈
    )
    RETURNS @SplitStringsTable TABLE
    (
     [id] int identity(1,1),
     [value] varchar(8000)-- nvarchar(4000)
    )
    AS
    BEGIN
        DECLARE @CurrentIndex int; --当前索引
        DECLARE @NextIndex int; --下一位索引
        DECLARE @ReturnText varchar(200);-- 返回文本值
        SELECT @CurrentIndex=1; --默念当前索引表示和第一位开始
       
        WHILE(@CurrentIndex<=len(@SplitString))--要分隔字符串的长度  当满足条件就会跳出
        BEGIN
            SELECT @NextIndex=charindex(@Separator,@SplitString,@CurrentIndex);--得到分隔符的位置
            IF(@NextIndex=0 OR @NextIndex IS NULL) --如果是0或者空得到新索引的长度
                SELECT @NextIndex=len(@SplitString)+1;
               
            SELECT @ReturnText=substring(@SplitString,@CurrentIndex,@NextIndex-@CurrentIndex); --截取返回
            INSERT INTO @SplitStringsTable([value])
            VALUES(@ReturnText);
            SELECT @CurrentIndex=@NextIndex+1; --索引依次变化
        END
        RETURN;
    END

     SELECT @Flag= charindex(@ReturnText,@ReturnTextTotal)--取得函数返回值(这句话就可以,上面的那个函数还有问题)

  • 相关阅读:
    上市前为什么要分红
    在文件开始追加一行
    c++ 日期时间工具
    windows c++找不到time.h sys/types.h
    截取ls -l的某一列
    提取指定类型文件到指定目录,保留目录结构
    批量转换当前目录下的文件名为snake case
    vcpkg boost uuid Bcrypt 链接问题
    文件名pascal转underscore
    vcpkg cmake 找不到boost
  • 原文地址:https://www.cnblogs.com/yzenet/p/2636331.html
Copyright © 2011-2022 走看看