1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'EndOfFirstWord' AND type = 'FN')
DROP FUNCTION EndOfFirstWord
GO
CREATE FUNCTION EndOfFirstWord (@chaine VARCHAR(500))
RETURNS INT
AS
BEGIN
DECLARE @ResultAnd INT
DECLARE @ResultOr INT
DECLARE @Result INT
SET @Result = 101
-- Je recupere les positions des séparateurs
SET @ResultAnd = (SELECT PATINDEX('%&&%', @chaine))
SET @ResultOr = (SELECT PATINDEX('%||%', @chaine))
-- Si un des séparateur est null, je lui affecte la valeur 0
IF @ResultAnd IS NULL
SET @ResultAnd = 99
IF @ResultOr IS NULL
SET @ResultOr = 99
-- Je retourne l'index du premier séparateur.
IF @ResultAnd > @ResultOr
SET @Result = @ResultOr
ELSE IF @ResultOr > @ResultAnd
SET @Result = @ResultAnd
RETURN(@Result)
END
GO
SELECT [786-3_AA_ArtSafe].[dbo].[EndOfFirstWord] ('Légumiermateriau = ''porcelaine'' || Légumiertravail = ''français''') |