[SQL] Remplacement de chaine de caracteres

[Fermé]
Signaler
Messages postés
525
Date d'inscription
lundi 28 août 2000
Statut
Membre
Dernière intervention
9 janvier 2016
-
 Xav -
Salut
Je cherche a remplacer une chaine de caracteres nom1 par une autre nom2 dans un champ d'une table Oracle 9i par une requete Sql (J'utilise Toad)
Les champs concernés doivent repondre a :
select champ from table p1
where p1.etat = 'Validé'
AND p1.champ LIKE '%nom1%';

Le champ concerné contient des valeurs separées par des virgules:
ex. toto,titi,nom1,tutu

Merci d'avance
PS: je suis novice en la matière :)
A+
Dan

4 réponses

Messages postés
525
Date d'inscription
lundi 28 août 2000
Statut
Membre
Dernière intervention
9 janvier 2016
35
Salut
J'ai teste la requete ci-dessous qui marche sauf que je peux pas trier mes enregistrements
update table
set champ = REPLACE(champ, 'nom1', 'nom2') ;
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Messages postés
279
Date d'inscription
lundi 6 juin 2005
Statut
Membre
Dernière intervention
22 décembre 2010
51
Salut

En une requete je pense que ca risque d'etre compliqué, mais ce que je pense c'est de faire une procédure qui récupère la valeur du champ complet puis de modifer à ta convenance, puis de remplacer ton champ dans la base

si kelkun voit une autre maniere??
Messages postés
279
Date d'inscription
lundi 6 juin 2005
Statut
Membre
Dernière intervention
22 décembre 2010
51
Je connaissais pas le REPLACE, mais a partir de la, en faisant une jointure de UPDATE sur le SELECT plus haut, avec comme champ join, l'identifiant. Ca devrais pouvoir tourner.
Je suis pas un spécialiste d'Oracle
Messages postés
3
Date d'inscription
mardi 14 juin 2005
Statut
Membre
Dernière intervention
22 juin 2005
2
Heu ben le plus simple c'est le update

>>> si tu veux modifier dans la table !
update <nom_table> set <colonne> = <nouvelle_valeur>
where <colonne>=<ancienne valeur>;

>>>et si tu veux juste le faire par affichage
select decode(colonne,<ancienne_valeur>,<valeur_de_substitution>,<valeur_par_defaut>)
from....;
Messages postés
525
Date d'inscription
lundi 28 août 2000
Statut
Membre
Dernière intervention
9 janvier 2016
35 >
Messages postés
3
Date d'inscription
mardi 14 juin 2005
Statut
Membre
Dernière intervention
22 juin 2005

Salut
Je veux seulement remplacer une partie des colonnes
Il faut donc recuperer l'ancienne valeur, remplacer une partie de l'enregistrement et le substituer a l'ancienne.
Le REPLACE , comme dit ,fonctionne tres bien si ce n'est la possibilite de trier les enregistrements touchés par la modification .
Messages postés
9
Date d'inscription
lundi 9 avril 2007
Statut
Membre
Dernière intervention
7 septembre 2011
>
Messages postés
525
Date d'inscription
lundi 28 août 2000
Statut
Membre
Dernière intervention
9 janvier 2016

Bonjour, j'ai actuellement le même problème que vous il y a 2 ans. J'aimerai modifier ligne par ligne une valeur d'une rubrique dans un champs de table et remplacer une valeur par une autre en fonction d'une condition. J'essaye le code suivant mais y'a un bug au niveau de HLitPremier :

HExécuteRequête(MaRequete)

SI ErreurDétectée ALORS
Erreur ("Erreur d'initialisation de la requête" +RC+ HErreurInfo())

SINON
HLitPremier (MaRequete)
TANTQUE PAS HEnDehors ()
HLitSuivant(MaRequete)
FIN

FIN

Ma Requete est une requete de modification.

Aviez-vous solutionné votre problème y'a 2 ans et pourriez vous m'indiquer une piste? Je vous en remercie d'avance
Bonjour,
ton pb vient juste apres le HLitPremier (MaRequete)
il faut indiquer si Htrouve(marequete) et continuer avec le meme code.