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

Sybase Discussion :

[ASE][TSQL]procédure stockée REPLACE


Sujet :

Sybase

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    tx
    tx est déconnecté
    Membre averti
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Par défaut [ASE][TSQL]procédure stockée REPLACE
    mon but est de faire un remplacement d un slash par un antislash mais il semble y avoir un pb sur le replace..
    puis de le comparer pour le supprimer.
    (la fonction sans le replace cad la suppression marche parfaitement)

    je ne voit pas d ou cela peut venir..
    voici le code de ma procédure:
    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
     
    CREATE PROCEDURE dbo.infoc_TBCASRV_deletelist(
    @CDSERVICE	varchar(10),
    @VAREP		varchar(100))
     
    AS BEGIN
    	BEGIN
    	    SET @VAREP = REPLACE(@VAREP,'/','\\')
    	END
    	DELETE 
    	FROM DEV_IMPACT..tmp_TBCASRV 
    	WHERE CDSERVICE= @CDSERVICE 
    	AND VAREP = @VAREP
     
        END

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 140
    Par défaut
    Salut,

    Essais avec str_replace au lieu de replace

  3. #3
    tx
    tx est déconnecté
    Membre averti
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Par défaut
    arf je viens de me rendre compte que ma version 11.9.* ne dispose ni du str_replace dispo a partir de 12.0.3 il me semble ni du replace dispo a partir de la v 15...

    merci qd meme

    par contre si qqun aurait une petite méthode équivalente a un replace je suis preneur ^^

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 25
    Par défaut
    Bonjour,

    Pour remplacer un caractère par un autre, STUFF est tout indiqué :
    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
    /* Procédure de remplacement de caractères */
    CREATE PROCEDURE remplace (@caractere_a_supprimer char(1), @caractere_a_inserer char(1), @chaine varchar(32) OUT) AS BEGIN
        DECLARE @position int
        SELECT  @position = CHARINDEX(@caractere_a_supprimer, @chaine)
        WHILE ( @position > 0 ) BEGIN
            SELECT @chaine = STUFF(@chaine, @position, 1, @caractere_a_inserer)
            SELECT @position = CHARINDEX(@caractere_a_supprimer, @chaine)
        END
    END  
    -- pour l'appeler :
    DECLARE @chaine varchar(32) 
    SELECT  @chaine = 'rendez-vous le 10-10-2010'
    EXEC remplace '-', '/', @chaine = @chaine OUT    -- test 1
    EXEC remplace '-', NULL, @chaine = @chaine OUT   -- test 2
    SELECT  @chaine      
    
    /* 
    Résultat 1 : 'rendez/vous le 10/10/2010'
    Résultat 2 : 'rendezvous le 10102010'
    */
    Par contre, pour remplacer une chaîne par une autre, la solution sera moins élégante. En voici une parmi d'autres :
    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
    CREATE PROCEDURE remplace (@caractere_a_supprimer varchar(32), @caractere_a_inserer varchar(32), @chaine varchar(255) OUT) AS BEGIN
        DECLARE @position int
        DECLARE @chaineavant varchar(255), @chaineaprès varchar(255) 
        SELECT  @position = CHARINDEX(@caractere_a_supprimer, @chaine)
        WHILE ( @position > 0 ) BEGIN
            SELECT @chaineavant = SUBSTRING(@chaine, 1, (@position - 1))
            SELECT @chaineaprès = SUBSTRING(@chaine, (@position + CHAR_LENGTH(@caractere_a_supprimer)), (CHAR_LENGTH(@chaine) - @position))
            SELECT @chaine = @chaineavant + @caractere_a_inserer + @chaineaprès
            SELECT @position = CHARINDEX(@caractere_a_supprimer, @chaine)
        END
    END
    -- pour l'appeler :
    DECLARE @chaine varchar(255) 
    SELECT  @chaine = '/chemin/vers/mon/repertoire'
    EXEC remplace '/', '\\', @chaine = @chaine OUT
    SELECT  @chaine     
    -- Résultat : \\chemin\\vers\\mon\\repertoire

Discussions similaires

  1. Erreur 233 during the login process
    Par olibara dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 17/01/2012, 21h58
  2. Réponses: 3
    Dernier message: 28/02/2007, 18h46
  3. [ASE][TSQL?] taille dump (ou base)
    Par Jean.Cri1 dans le forum Sybase
    Réponses: 4
    Dernier message: 12/10/2006, 15h46
  4. [ASE][TSQL]utilisation de decode() dans Sybase
    Par madina dans le forum Sybase
    Réponses: 3
    Dernier message: 21/06/2006, 17h38
  5. [ASE][TSQL]date du jour _-10
    Par marc olivier dans le forum Sybase
    Réponses: 1
    Dernier message: 07/06/2006, 17h58

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