zoukankan      html  css  js  c++  java
  • 1 SQL SERVER 实现字符串分割成table的方法

    CREATE FUNCTION [dbo].[fn_SplitStringToTable]
    (
        @p_Input     VARCHAR(MAX),
        @p_Delimeter CHAR(1) = ','
    )
    RETURNS @l_Table TABLE
    (
        Id       INT IDENTITY(1, 1),
        Value    VARCHAR(511),
        Position INT,
        Length   INT
    )
    
    BEGIN
       DECLARE @l_Position INT,
               @l_Value    VARCHAR(256)
       
       SELECT @l_Position = 1,
              @l_Value = ''
       
       IF RIGHT(@p_Input, LEN(@p_Delimeter)) <> @p_Delimeter
          SET @p_Input = @p_Input + @p_Delimeter
       
       WHILE SUBSTRING(@p_Input, @l_Position, 1) = CHAR(10) OR
            SUBSTRING(@p_Input, @l_Position, 1) = CHAR(13)
       BEGIN
          SELECT @l_Position = @l_Position + 1
       END
       
       WHILE @l_Position <= CHARINDEX(@p_Delimeter, @p_Input, @l_Position)
       BEGIN
          SET @l_Value = RTRIM ( LTRIM ( SUBSTRING ( @p_Input,
                                                     @l_Position,
                                                     CHARINDEX ( @p_Delimeter,
                                                                 @p_Input,
                                                                 @l_Position) - @l_Position ) ) )
          
          IF NOT EXISTS ( SELECT 1
                            FROM @l_Table
                           WHERE Value = @l_Value )
          BEGIN
             INSERT INTO @l_Table ( Value, Position, Length )
                  VALUES ( @l_Value, @l_Position, CHARINDEX ( @p_Delimeter,
                                                              @p_Input,
                                                              @l_Position ) - @l_Position )
          END
          
          SELECT @l_Position = CHARINDEX(@p_Delimeter, @p_Input, @l_Position) + 1
          
          WHILE SUBSTRING(@p_Input, @l_Position, 1) = CHAR(10) OR
             SUBSTRING(@p_Input, @l_Position, 1) = CHAR(13)
          BEGIN
             SELECT @l_Position = @l_Position + 1
          END
       END
       RETURN
    END
  • 相关阅读:
    什么是ROR
    Struts2中使用Session的两种方法
    js的时间操作方法
    产生4位包含大小字母与数字的验证码
    Java关键字this、super使用总结
    java 反射的实例
    Java语言中定义常量注意事项
    java 静态方法和实例方法的区别
    多线程的例子
    java 中的内省机制
  • 原文地址:https://www.cnblogs.com/mibing/p/7447234.html
Copyright © 2011-2022 走看看