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

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 11684|回复: 0
打印 上一主题 下一主题

[Sql] F_SQLSERVER_SPLIT

[复制链接]

40

主题

41

帖子

356

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
356
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, 2024-4-19 14:43 , Processed in 0.083008 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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