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
  • 相关阅读:
    dedecms织梦建站总结
    ubuntu安装
    git命令
    关于测试日报
    Appium环境搭建(Windows版)
    jmeter,CSV数据加载、数据库连接、正则
    jmeter,参数、Bean Shell断言
    jmeter安装和组件说明
    造数据
    WEB UI自动化
  • 原文地址:https://www.cnblogs.com/mibing/p/7447234.html
Copyright © 2011-2022 走看看