sql 把一段用逗号连接的字符串分割之后插入临时表
BEGIN TRY DROP FUNCTION dbo.My_Split END TRY BEGIN CATCH END CATCH
GO
CREATE FUNCTION [dbo].[My_Split](@SourceSql NVARCHAR(MAX),@StrSeprate NVARCHAR(10))
RETURNS @temp TABLE(result NVARCHAR(100))
--实现split功能 的函数
AS
BEGIN
DECLARE @i INT
SET @SourceSql=RTRIM(LTRIM(@SourceSql)) --去掉左右两边的空格
SET @SourceSql=SUBSTRING(@SourceSql,0,LEN(@SourceSql)-1) --去掉最后一个逗号
SET @i=CHARINDEX(@StrSeprate,@SourceSql) --返回第一个逗号的位置
WHILE @i>=1
BEGIN
INSERT @temp VALUES(left(@SourceSql,@i-1)) --把第一个逗号的左边插入临时表
SET @SourceSql=SUBSTRING(@SourceSql,@i+1,LEN(@SourceSql)-@i) --从第一个逗号的后面截取 整个字符串的长度再减去第一个逗号以前的长度
SET @i=CHARINDEX(@StrSeprate,@SourceSql) --依次循环
END
IF @SourceSql<>'\'
INSERT @temp VALUES(@SourceSql)
RETURN
END
例如
declare @sql nvarchar(2000)
set @sql='AppIP,AppName,AppProtocol,AttachmentsTooLargeReply,AttachmentsTooLargeReplySubject,'
select * from dbo.My_Split(@sql,',')