IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Probleme de fonction


Sujet :

MS SQL Server

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 114
    Points : 102
    Points
    102
    Par défaut Probleme de fonction
    j'ai une fonction charger de tester la position de 2 chaine de caractere et de renvoyer la premier de ces 2 positions

    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''')
    La fonction me renvoyait trop fréquement 0 j ai donc tester en changeant les initialisation de mes variables a 99 et 101.
    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 ?

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 114
    Points : 102
    Points
    102
    Par défaut
    auto réponse

    SET @ResultAnd = (SELECT PATINDEX('%&&%', @chaine))
    si && n'est pas présent dans la chaine @resultAnd ne sera pas null mais égal a 0
    donc je dois tester = 0 au lieu de IS null

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme de fonction javascript
    Par cach dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 06/07/2005, 10h34
  2. Réponses: 17
    Dernier message: 24/03/2005, 12h24
  3. [langage] problème avec fonction read
    Par domidum54 dans le forum Langage
    Réponses: 2
    Dernier message: 30/03/2004, 20h42
  4. [VB6]Problème de fonction
    Par mustang-ffw02 dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 27/03/2004, 15h09
  5. Probleme de fonction
    Par yenna dans le forum ASP
    Réponses: 6
    Dernier message: 01/03/2004, 14h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo