j'ai une fonction charger de tester la position de 2 chaine de caractere et de renvoyer la premier de ces 2 positions
La fonction me renvoyait trop fréquement 0 j ai donc tester en changeant les initialisation de mes variables a 99 et 101.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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''')
Et étonnanent j'obtiens toujours 0 dans le cas cité au dessus.
J'ai beau retourner le probleme dans tous les sens je ne vois vraiment pas poruquoi.
Any idée ?
Partager