参考:https://www.ccfuns.com/post/36.html
例子:
判断 1,2,3中是否包含9,8,7
解决方案:
使用sqlserver标量值函数
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: BoBo -- Create date: 2019-02-14 -- Description: 某字符串是否包含全部数字集合(使用逗号分隔,可以是字符串) -- ============================================= ALTER FUNCTION [dbo].[ContainsInts] ( @Source NVARCHAR(MAX), @Ints NVARCHAR(MAX) ) RETURNS BIT AS BEGIN -- ============================================= IF LEN(ISNULL(@Source,'')) = 0 OR LEN(ISNULL(@Ints,'')) = 0 RETURN 0 DECLARE @idx INT=1 -- 逗号索引 DECLARE @slice NVARCHAR(MAX) -- 分隔的值 -- ============================================= WHILE @idx != 0 BEGIN SET @idx = CHARINDEX(',',@Ints) IF @idx != 0 SET @slice = LEFT(@Ints,@idx - 1) ELSE SET @slice = @Ints IF LEN(@slice) > 0 AND CHARINDEX(','+@slice+',',','+@Source+',')>0 RETURN 1 SET @Ints = RIGHT(@Ints, LEN(@Ints) - @idx) IF LEN(@Ints) = 0 BREAK END -- ============================================= RETURN 0 -- ============================================= END
测试:
SELECT NTERP.dbo.ContainsInts('1,2,3', '9,8,7') SELECT NTERP.dbo.ContainsInts('1,2,3', '9,8,7,1')
结果:
