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

Développement SQL Server Discussion :

Comparaison de chaîne


Sujet :

Développement SQL Server

  1. #1
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut Comparaison de chaîne
    Hello,

    Je cherche à faire une comparaison de chaîne de charactère dans une procédure stockée

    J'aimerais faire quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    	IF EXISTS(SELECT affaireNum FROM AffaireServices WHERE serviceChar='SAMPP' AND affaireNum=@Numero_affaire)
    	BEGIN
    		DECLARE @TMP_PREAVIS  VARCHAR(255)
    		SET @TMP_PREAVIS = @Preavis_select_Serv01
    		IF (@TMP_PREAVIS == 'Veuillez choisir') 
    		BEGIN
    			@TMP_PREAVIS = ''
    		END
    		UPDATE AffaireServices SET recuLe2=@Date_recu_Service01b, aConsulte=@Service01,renvoyeLe=@Date_renvoyer_Service01,envoyeLe=@Date_envoyer_Service01, recuLe=@Date_recu_Service01,preavis=@TMP_PREAVIS WHERE serviceChar='SAMPP' AND affaireNum=@Numero_affaire
    	END
    	ELSE 
    	INSERT INTO AffaireServices (recuLe2,renvoyeLe,envoyeLe,recuLe,serviceChar,affaireNum,nom,aConsulte,preavis,serviceId) VALUES (@Date_recu_Service01b,@Date_renvoyer_Service01,@Date_envoyer_Service01,@Date_recu_Service01,'SAMPP',@Numero_affaire,'SAMPP - Service des affaires militaires et de la protection de la population',@Service01,@Preavis_select_Serv01,1)

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    J'ai finalement ca qui est validé par SQLServer je vais testé ca demain

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    	IF EXISTS(SELECT affaireNum FROM AffaireServices WHERE serviceChar='SAMPP' AND affaireNum=@Numero_affaire)
    	BEGIN
    		IF (CHARINDEX ('Veuillez choisir', @Preavis_select_Serv01) > 0)
    			BEGIN
    				UPDATE AffaireServices SET recuLe2=@Date_recu_Service01b, aConsulte=@Service01,renvoyeLe=@Date_renvoyer_Service01,envoyeLe=@Date_envoyer_Service01, recuLe=@Date_recu_Service01,preavis='' WHERE serviceChar='SAMPP' AND affaireNum=@Numero_affaire		
    			END		
    		ELSE 
    			BEGIN
    				UPDATE AffaireServices SET recuLe2=@Date_recu_Service01b, aConsulte=@Service01,renvoyeLe=@Date_renvoyer_Service01,envoyeLe=@Date_envoyer_Service01, recuLe=@Date_recu_Service01,preavis=@Preavis_select_Serv01 WHERE serviceChar='SAMPP' AND affaireNum=@Numero_affaire		
    			END
    	END

  3. #3
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Vous pouvez faire plus simplement :

    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
    41
    42
    43
    44
    45
    46
    47
    48
     
    IF EXISTS
    (
    	SELECT *
    	FROM AffaireServices
    	WHERE serviceChar='SAMPP'
    	AND affaireNum = @Numero_affaire
    )
    BEGIN
    	UPDATE AffaireServices
    	SET recuLe2 = @Date_recu_Service01b,
    		aConsulte = @Service01,
    		renvoyeLe = @Date_renvoyer_Service01,
    		envoyeLe = @Date_envoyer_Service01,
    		recuLe = @Date_recu_Service01,
    		preavis = ISNULL(NULLIF(@Preavis_select_Serv01, 'Veuillez choisir'), '')
    	WHERE serviceChar='SAMPP'
    	AND affaireNum = @Numero_affaire
    END
    ELSE
    BEGIN
    	INSERT INTO AffaireServices
    	(
    		recuLe2,
    		renvoyeLe,
    		envoyeLe,
    		recuLe,
    		serviceChar,
    		affaireNum,
    		nom,
    		aConsulte,
    		preavis,
    		serviceId
    	)
    	VALUES
    	(
    		@Date_recu_Service01b,
    		@Date_renvoyer_Service01,
    		@Date_envoyer_Service01,
    		@Date_recu_Service01,
    		'SAMPP',
    		@Numero_affaire,
    		'SAMPP - Service des affaires militaires et de la protection de la population',
    		@Service01,
    		@Preavis_select_Serv01,
    		1
    	)
    END
    Seulement dans le prédicat EXISTS et pour la fonction d'aggrégation COUNT, il est préférable d'utiliser * plutôt qu'un nom de colonne.

    Pensez à indenter votre code, vous ne vous y retrouverez que mieux et éviterez des erreurs

    Si vous êtes sous SQL Server 2008, pensez à l'ordre MERGE.

    @++

Discussions similaires

  1. [Excel-VBA] Pb de comparaison de chaîne de caractères
    Par tangjuncn dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/02/2007, 12h50
  2. [String] Comparaison de chaînes ?
    Par toto019 dans le forum Langage
    Réponses: 4
    Dernier message: 21/07/2006, 23h18
  3. Comparaison de chaîne (avec pourcentage ou...)
    Par yves232 dans le forum Langage
    Réponses: 4
    Dernier message: 26/04/2006, 17h23
  4. Comparaison de chaînes
    Par log2n dans le forum Assembleur
    Réponses: 12
    Dernier message: 20/02/2006, 19h21
  5. MySQL, et les comparaisons de chaînes en cyrillique, Chinois
    Par SuperCed dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 15/12/2005, 15h24

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