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
时间: 2024-10-09 00:47:10

1 SQL SERVER 实现字符串分割成table的方法的相关文章

SQL Server自定义字符串分割函数——Split

我相信大部分人都碰到过,处理数据的时候,字段的值是以 ',' (逗号)分隔的形式,所以我也不能避免. 然后我才知道,sql 是没有类似于 C# 和 Javascript 这种分割字符串的方法.( Split ) 所以我自己定义了一个 sql 函数(多声明表值函数),代码如下: 1 USE [Test] 2 GO 3 /****** Object: UserDefinedFunction [dbo].[Split] Script Date: 2017/4/14 23:04:08 ******/ 4

SQL Server 自定义字符串分割函数

一.按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果(标量值函数) 1 create function Func_StrArrayLength 2 ( 3 @str varchar(1024), --要分割的字符串 4 @split varchar(10) --分隔符号 5 ) 6 returns int 7 as 8 begin 9 declare @location int 10 declare @start int 11

SQL Server 连接字符串和身份验证 学习

SQL Server .NET Data Provider 连接字符串包含一个由一些属性名/值对组成的集合.每一个属性/值对都由分号隔开.          PropertyName1=Value1;PropertyName2=Value2;PropertyName3=Value3;.....同样,连接字符串必须包含SQL Server实例名称:          Data Source=ServerName;          使用本地的SQL Server(localhost),如果想要使用

SQL Server 2008 Datetime Cast 成 Date 类型可以使用索引(转载)

很久没写blog,不是懒,实在是最近我这的访问速度不好,用firefox经常上传不了图片 ....... 今天无意发现了SQL Server 2008 Datetime Cast 成 Date 类型可以使用索引,分享一下: 测试环境: USE TEMPDBGO CREATE TABLE TB(ID INT IDENTITY(1,1) PRIMARY KEY,NAME VARCHAR(200),OPTIME DATETIME DEFAULT GETDATE())GODECLARE @I INT =

SQL Server 连接字符串和身份验证详解

SQL Server .NET Data Provider 连接字符串包含一个由一些属性名/值对组成的集合.每一个属性/值对都由分号隔开.          PropertyName1=Value1;PropertyName2=Value2;PropertyName3=Value3;.....同样,连接字符串必须包含SQL Server实例名称:          Data Source=ServerName;          使用本地的SQL Server(localhost),如果想要使用

.NET SQL Server连接字符串句法

.NET SQL Server连接字符串句法 数据库的连接性已经发展成为应用程序开发的一个标准方面.数据库连接字符串现在已经成为每个项目的标准必备条件.我发现自己为了找到所需要的句法,经常要从另外一个应用程序中复制连接字符串或者进行一次搜索.这个在与SQL Server交互操作时更是如此,因为它有太多的连接字符串选项.现在就让我们来研究一下连接字符串的众多方面. 连接字符串 在对象实例化或者建立期间,数据库连接字符串通过属性或方法被传递到必要的对象.连接字符串的格式是一个以分号为界,划分键/值参

SQL Server 连接字符串和身份验证

SQL Server .NET Data Provider 连接字符串包含一个由一些属性名/值对组成的集合.每一个属性/值对都由分号隔开.         PropertyName1=Value1;PropertyName2=Value2;PropertyName3=Value3;.....同样,连接字符串必须包含SQL Server实例名称:         Data Source=ServerName;         使用本地的SQL Server(localhost),如果想要使用远程服

JavaScript基础 split(&quot;&quot;) 将字符串分割成字符数组

镇场诗: 清心感悟智慧语,不着世间名与利.学水处下纳百川,舍尽贡高我慢意. 学有小成返哺根,愿铸一良心博客.诚心于此写经验,愿见文者得启发.------------------------------------------ code: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=ut

delphi连接sql server的字符串2011-10-11 16:07

delphi连接sql server的字符串2011-10-11 16:07 一.delphi连接sql server 放一个连接组件 ADOConnection, 其它组件TADODataSet,TADOQuery等的connection指向ADOConnection就可以了. 你可以双击ADOConnection,使用它的向导.也可以使用下面的代码 function OpenADOConn:boolean; begin result:=false; try with ADOConnectio