Précédent   Forum des professionnels en informatique > Bases de données > Sybase
Sybase Forum sur la base de données Sybase. Avant de poster -> F.A.Q Sybase, Tutoriels Sybase
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/07/2006, 16h29   #1
tx
Invité régulier
 
Inscription : février 2006
Messages : 21
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 21
Points : 6
Points : 6
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 :
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
tx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2006, 17h19   #2
Membre habitué
 
Inscription : juillet 2004
Messages : 140
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2004
Messages : 140
Points : 149
Points : 149
Salut,

Essais avec str_replace au lieu de replace
mdevlieg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2006, 17h32   #3
tx
Invité régulier
 
Inscription : février 2006
Messages : 21
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 21
Points : 6
Points : 6
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 ^^
tx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2006, 15h14   #4
Candidat au titre de Membre du Club
 
Inscription : mars 2006
Messages : 17
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 17
Points : 10
Points : 10
Bonjour,

Pour remplacer un caractère par un autre, STUFF est tout indiqué :
Code :
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 :
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
Semhur est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h56.


 
 
 
 
Partenaires

Hébergement Web