我必须在sql中创建一个函数,它将验证逗号分隔的字符串。
example: string will be like @str = 'AB,CD,EF,GH'
我必须检查字符串值必须是以下之一
i.e (AB,EF,GH)
GH Cannot come alone
。
如果为true则函数将返回一个真正的标志。
所以,我想问一下如何将这个字符串拆分成一个数组并将该数组与该预定义的值集进行比较..
答案 0 :(得分:1)
此函数将以逗号分隔列表并返回一个表,就像我认为仅适用于SQL Server 2016的STRING_SPLIT()
一样。然后,您只需INNER JOIN
到表根据您的条件。我通常会将一个表变量设置为此函数的结果,以便我可以重复使用它。
ALTER FUNCTION [dbo].[ufn_split_string]
(
@RowData NVARCHAR(MAX),
@Delimeter NVARCHAR(MAX)
)
RETURNS @RtnValue TABLE
(
ID INT IDENTITY(1,1),
DataRow NVARCHAR(MAX)
)
AS
BEGIN
DECLARE @Iterator INT
SET @Iterator = 1
DECLARE @FoundIndex INT
SET @FoundIndex = CHARINDEX(@Delimeter,@RowData)
WHILE (@FoundIndex>0)
BEGIN
INSERT INTO @RtnValue (DataRow)
SELECT
Data = LTRIM(RTRIM(SUBSTRING(@RowData, 1, @FoundIndex - 1)))
SET @RowData = SUBSTRING(@RowData,
@FoundIndex + 1,
LEN(@RowData))
SET @Iterator = @Iterator + 1
SET @FoundIndex = CHARINDEX(@Delimeter, @RowData)
END
INSERT INTO @RtnValue (DataRow)
SELECT Data = LTRIM(RTRIM(@RowData))
RETURN
END
GO