USE [site_fuchs] GO /****** Object: UserDefinedFunction [dbo].[ott_jcsv_contains] Script Date: 02.12.2020 21:05:05 ******/ DROP FUNCTION [dbo].[ott_jcsv_contains] GO /****** Object: UserDefinedFunction [dbo].[ott_jcsv_contains] Script Date: 02.12.2020 21:05:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE FUNCTION [dbo].[ott_jcsv_contains] ( @groupcode varchar(10) ,@text varchar(4000) ,@fragment varchar(500) ) RETURNS bit AS BEGIN DECLARE @RET bit; DECLARE @textinput varchar(4000) = REPLACE(ISNULL(@text, ''), ' ', ''); IF (@textinput = '' OR @textinput = '{}' OR @fragment = '') BEGIN SET @RET = 0; END ELSE BEGIN -- Will be true -- if any of the fragments exist in the list of text-items DECLARE @Pattern varchar(20) = '%"' + @groupcode + '":"%'; DECLARE @P0 int = PATINDEX(@pattern, @textinput); DECLARE @P1 int = @P0 + LEN(@pattern) -2; DECLARE @P2 int = CHARINDEX('"',@textinput,@p1); IF @P0 = 0 BEGIN SET @RET = 0; END ELSE BEGIN DECLARE @text2 varchar(4000) = SUBSTRING(@textinput, @P1, @P2 - @P1); WITH texts as (SELECT * FROM string_split(ISNULL(@text2,''), ',')) ,fragments as (SELECT * FROM string_split(ISNULL(@fragment,''), ',')) SELECT @RET = CASE WHEN EXISTS (SELECT * FROM texts JOIN fragments ON texts.[value] = fragments.[value]) THEN 1 ELSE 0 END; END END RETURN @RET; END GO ALTER AUTHORIZATION ON [dbo].[ott_jcsv_contains] TO SCHEMA OWNER GO