41 lines
815 B
MySQL
41 lines
815 B
MySQL
|
|
|
||
|
|
/****** Object: UserDefinedFunction [dbo].[Find_In_Set] Script Date: 08/13/2025 12:30:04 ******/
|
||
|
|
SET ANSI_NULLS ON
|
||
|
|
GO
|
||
|
|
|
||
|
|
SET QUOTED_IDENTIFIER ON
|
||
|
|
GO
|
||
|
|
|
||
|
|
|
||
|
|
-- 创建自定义函数
|
||
|
|
create FUNCTION [dbo].[Find_In_Set] (@str NVARCHAR(255), @strlist NVARCHAR(MAX))
|
||
|
|
RETURNS INT
|
||
|
|
AS
|
||
|
|
BEGIN
|
||
|
|
DECLARE @pos INT = 1;
|
||
|
|
DECLARE @currentStr NVARCHAR(255);
|
||
|
|
DECLARE @startPos INT = 1;
|
||
|
|
DECLARE @endPos INT;
|
||
|
|
|
||
|
|
WHILE @startPos <= LEN(@strlist)
|
||
|
|
BEGIN
|
||
|
|
SET @endPos = CHARINDEX(',', @strlist, @startPos);
|
||
|
|
IF @endPos = 0
|
||
|
|
SET @endPos = LEN(@strlist) + 1;
|
||
|
|
|
||
|
|
SET @currentStr = SUBSTRING(@strlist, @startPos, @endPos - @startPos);
|
||
|
|
IF @currentStr = @str
|
||
|
|
RETURN @pos;
|
||
|
|
|
||
|
|
SET @startPos = @endPos + 1;
|
||
|
|
SET @pos = @pos + 1;
|
||
|
|
END;
|
||
|
|
|
||
|
|
RETURN 0;
|
||
|
|
END;
|
||
|
|
|
||
|
|
|
||
|
|
GO
|
||
|
|
|
||
|
|
|