存储过程调用函数:将字符串拆分为表

Posted ypyp123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了存储过程调用函数:将字符串拆分为表相关的知识,希望对你有一定的参考价值。

USE [riskmain]
GO

/****** Object: UserDefinedFunction [dbo].[fnSplit] Script Date: 2020/7/23 12:05:46 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO


-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: 将字符串拆分为表
-- Modify: liuli 2013-9-28 9:49:40 判断为空情况
-- =============================================
CREATE FUNCTION [dbo].[fnSplit]
(
@string VARCHAR(max),
@split VARCHAR(2)
)
RETURNS @t TABLE(col VARCHAR(MAX))
AS


BEGIN
WHILE (CHARINDEX(@split, @string) <> 0)
BEGIN
INSERT @t
(
col
)
VALUES
(
SUBSTRING(@string, 1, CHARINDEX(@split, @string) -1)
)
SET @string = STUFF(@string, 1, CHARINDEX(@split, @string), ‘‘)
END
IF (@string <> ‘‘)
BEGIN
INSERT @t
(
col
)
VALUES
(
@string
)
END
RETURN
END
GO

存储过程调用该函数:

ALTER PROCEDURE [Base].[prVehicleShareMointDel]
@ModifiedUserID int
,@IDs nvarchar(max)
,@O_RETURN INT OUTPUT
AS
BEGIN
SET NOCOUNT ON;

UPDATE [Base].[VehicleShareMoint]
SET
ModifiedUserID=@ModifiedUserID
,[ModifiedTime]=GETDATE()
,[IsValid]=0
WHERE EXISTS
(
SELECT 1
from dbo.fnSplit(@IDs,‘,‘) AS B
WHERE B.col=ID/*ID代表[Base].[VehicleShareMoint]中的ID*/

@IDs:该值为前端传过来的值

);
IF @@ROWCOUNT>0
BEGIN
SET @O_RETURN=1;
END
ELSE
BEGIN
SET @O_RETURN=0;
END
END;

GO

以上是关于存储过程调用函数:将字符串拆分为表的主要内容,如果未能解决你的问题,请参考以下文章

将分隔字符串拆分为存储过程中的变量[重复]

如何在存储过程中拆分逗号分隔的字符串?

如何通过在SSIS中调用函数或存储过程来使用拆分转换过滤和拆分数据?

如何将字符串拆分为列表?

sql将字符串拆分为始终相同数量的片段

拆分用逗号分隔的字符串并将值存储到 int 数组中