Rechercher : dans
Par :

[SQL] Remplacement de chaine de caracteres

Dernière réponse le 22 nov 2007 à 01:03:32 hasendan, le 20 jun 2005 à 22:07:48 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « [SQL] Remplacement de chaine de caracteres » dans :
Linux - L'éditeur Vi VoirIntroduction à Vi Vi est un des éditeurs de texte les plus populaires sous les systèmes de type Unix (avec Emacs et pico) malgré son ergonomie très limitée. Sous Linux il existe une version libre de Vi appelée Vim (Vi Improved). Vi (prononcez...
VBScript - Les fonctions de chaînes de caractères VoirLes fonctions de chaînes de caractères Fonction Description Filter(InputStrings, Value[, Include[, Compare]]) Sélectionne des chaînes de caractères parmi un tableau de chaînes...
PHP - Expressions régulières VoirQu'est-ce qu'une expression régulière? Les expressions régulières sont des modèles créés à l'aide de caractères ASCII permettant de manipuler des chaînes de caractères, c'est-à-dire permettant de trouver les portions de la chaîne correspondant au...

1

nico7382, le 21 jun 2005 à 08:52:20

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??

Répondre à nico7382

2

hasendan, le 21 jun 2005 à 11:10:33

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') ; A+
Dan

Répondre à hasendan

3

nico7382, le 21 jun 2005 à 12:43:21

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

Répondre à nico7382

4

sparxnekk, le 22 jun 2005 à 12:58:04
  • +1

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....;

Répondre à sparxnekk

5

hasendan, le 22 jun 2005 à 22:25:17

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 . A+
Dan

Répondre à hasendan

6

arsene12, le 21 jui 2007 à 11:21:59

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

Répondre à arsene12

7

 Xav, le 22 nov 2007 à 01:03:32

Bonjour,
ton pb vient juste apres le HLitPremier (MaRequete)
il faut indiquer si Htrouve(marequete) et continuer avec le meme code.

Répondre à Xav