巴布鱼——软件工程师的家园

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 309|回复: 0

[Sql] F_SQLSERVER_SPLIT

[复制链接]

35

主题

36

帖子

304

积分

中级会员

Rank: 3Rank: 3

积分
304
QQ
发表于 2018-1-2 13:08:22 | 显示全部楼层 |阅读模式
  1. CREATE FUNCTION [dbo].[F_SQLSERVER_SPLIT](@Long_str NVARCHAR(MAX),@split_str NVARCHAR(100))   
  2.   RETURNS  @tmp TABLE(        
  3.       ID          inT     IDENTITY PRIMARY KEY,      
  4.       short_str   NVARCHAR(MAX)   
  5.   )   
  6.   AS   
  7.   BEGIN   
  8.       DECLARE @short_str NVARCHAR(MAX),@split_str_length int,@split_str_Position_Begin int
  9.       SET @split_str_length = LEN(@split_str)
  10.      SET @Long_str=REPLACE(REPLACE(@Long_str,CHAR(10),''),CHAR(13),'')
  11.      IF CHARINDEX(@split_str,@Long_str)=1
  12.           SET @Long_str=STUFF(@Long_str,1,@split_str_length,'')
  13.      IF CHARINDEX(@split_str,@Long_str)=0
  14.          INSERT INTO @tmp SELECT @Long_str
  15.      ELSE
  16.          BEGIN
  17.              WHILE 1>0   
  18.                  BEGIN   
  19.                      SET @split_str_Position_Begin = CHARINDEX(@split_str,@Long_str)
  20.                      SET @short_str=LEFT(@Long_str,@split_str_Position_Begin-1)
  21.                      --IF @short_str<>''
  22.                                          INSERT INTO @tmp SELECT @short_str  
  23.                      SET @Long_str=STUFF(@Long_str,1,@split_str_Position_Begin+@split_str_length-1,'')
  24.                      SET @split_str_Position_Begin = CHARINDEX(@split_str,@Long_str)
  25.                      IF @split_str_Position_Begin=0
  26.                      BEGIN
  27.                          --IF LTRIM(@Long_str)<>''
  28.                              INSERT INTO @tmp SELECT @Long_str
  29.                          BREAK
  30.                      END
  31.                  END           
  32.          END
  33.      RETURN     
  34. END
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|巴布鱼

GMT+8, 2018-11-15 20:47 , Processed in 0.241014 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表