博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sql Split函数(WHERE RouterID IN (SELECT Item FROM dbo.Split(@routerIds,',')))
阅读量:5153 次
发布时间:2019-06-13

本文共 1142 字,大约阅读时间需要 3 分钟。

CREATE FUNCTION [dbo].[Split]
(
@origStr VARCHAR(8000) , --待拆分的字符串
@markStr VARCHAR(100)
) --拆分标记,如','
RETURNS @splittable TABLE
(
id INT NOT NULL , --编号ID
item INT NOT NULL --拆分后的字符串
)
AS
BEGIN
DECLARE @strlen INT ,
@postion INT ,
@start INT ,
@sublen INT ,
@TEMPstr VARCHAR(200) ,
@TEMPid INT
SELECT @strlen = LEN(@origStr) ,
@start = 1 ,
@sublen = 0 ,
@postion = 1 ,
@TEMPstr = '' ,
@TEMPid = 0
IF ( RIGHT(@origStr, 1) <> @markStr )
BEGIN
SET @origStr = @origStr + @markStr
END
WHILE ( ( @postion <= @strlen )
AND ( @postion != 0 )
)
BEGIN
IF ( CHARINDEX(@markStr, @origStr, @postion) != 0 )
BEGIN
SET @sublen = CHARINDEX(@markStr, @origStr, @postion)
- @postion ;
END
ELSE
BEGIN
SET @sublen = @strlen - @postion + 1 ;
END

IF ( @postion <= @strlen )

BEGIN
SET @TEMPid = @TEMPid + 1 ;
SET @TEMPstr = SUBSTRING(@origStr, @postion, @sublen) ;
INSERT INTO @splittable
( id, item )
VALUES ( @TEMPid, @TEMPstr )
IF ( CHARINDEX(@markStr, @origStr, @postion) != 0 )
BEGIN
SET @postion = CHARINDEX(@markStr, @origStr,
@postion) + 1
END
ELSE
BEGIN
SET @postion = @postion + 1
END
END
END
RETURN
END

转载于:https://www.cnblogs.com/q101301/p/4206061.html

你可能感兴趣的文章
Xcode 6.2 beta 3 太难下载!下载了,不敢独享
查看>>
并发编程
查看>>
Bootstrap
查看>>
C语言错误: HEAP CORRUPTION DETECTED
查看>>
【Java基础】Java类的加载和对象创建流程的详细分析
查看>>
2018-2019-1 20165231《信息安全系统设计基础》第二周学习总结
查看>>
iOS之文本属性Attributes的使用
查看>>
从.Net版本演变看String和StringBuilder性能之争
查看>>
Excel操作 Microsoft.Office.Interop.Excel.dll的使用
查看>>
XlFileFormat
查看>>
Windows消息机制(转)1
查看>>
大话设计模式-职责链模式
查看>>
解决Ubuntu下博通网卡驱动问题
查看>>
Oracle中的instead of触发器
查看>>
【bzoj2788】Festival
查看>>
执行gem install dryrun错误
查看>>
Java SE之正则表达式一:概述
查看>>
HTML5简单入门系列(四)
查看>>
实现字符串反转
查看>>
转载:《TypeScript 中文入门教程》 5、命名空间和模块
查看>>