zoukankan      html  css  js  c++  java
  • SQL Server通过函数把逗号分隔的字符串拆分成数据列表的脚本-干货


    CREATE FUNCTION [dbo].[Split](@separator VARCHAR(64)=',',@string NVARCHAR(MAX))
      RETURNS @ResultTab TABLE (
         Id    INT ,
         Res     NVARCHAR(500)
     )
     AS
     BEGIN
         DECLARE @Num INT
         IF(@string IS NOT NULL AND @string <> '' AND LEN(@string)>0)
         BEGIN
             IF(CHARINDEX(@separator,@string)>0)        --判断要截取的字符是否存在
             BEGIN
                 SET @Num=0
                 WHILE (CHARINDEX(@separator,@string)>0)        --如果要截取的字符存在,就继续循环
                 BEGIN
                     SET @Num=@Num+1
                     
                     INSERT INTO @ResultTab(Id,Res)        --截取字符串,插入表变量
                     SELECT @Num,LEFT(@string,CHARINDEX(@separator,@string)-1)
                     
                     --把已经截取并插入的字符串删除
                     SET @string=STUFF(@string,1,CHARINDEX(@separator,@string)-1+LEN(@separator),'')    
                 END
                 
                 --如果最后一个截取的字符串为空,那就不插入了
                 --例如:'123,456,789,' 这样的字符串最后剩下的就是空字符串了
                 IF(@string IS NOT NULL AND @string <> '')
                 BEGIN
                     INSERT INTO @ResultTab(Id,Res)
                     SELECT @Num+1,@string
                 END            
             END
             ELSE
             BEGIN
                     INSERT INTO @ResultTab(Id,Res)        --截取字符串,插入表变量
                     SELECT 1,@string
             END
          END
          ELSE
              BEGIN
                 DELETE FROM @ResultTab
              END
         RETURN
     END


  • 相关阅读:
    SQL事务
    C# 怎样读写EXCEL文件
    如何#读写EXCEL 文件 (http://space.cnblogs.com/question/7131/)
    C# 怎样读写EXCEL文件 (http://space.cnblogs.com/question/7131/)
    控制DataGirdView中單元格
    C#中ToString格式大全
    转贴:用SqlCommandBuilder 实现批量更新
    错题记录1
    Java—关于String的分析
    Java模拟双色球彩票
  • 原文地址:https://www.cnblogs.com/hualiuliu/p/11457325.html
Copyright © 2011-2022 走看看