Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
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 15/01/2007, 18h46   #1
Invité de passage
 
Inscription : septembre 2006
Messages : 8
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 8
Points : 2
Points : 2
Par défaut ORA-00932 Replace sur un champ Long impossible ?

Bonjour (ou bonsoir c'est selon),

J'ai une table qui contient des données qui ont été chargées il y-a longtemps depuis un autre sgbd (j'ignore lequel). Le type qui a fait l'import des données à l'époque n'a pas pensé aux éventuelles différences de jeu de caractère et je me retrouve avec des '¿' et autres cochonneries dans une colonne de type Long de ma table .

Naturellement on me demande d'y remédier .

Si je veux, par exemple, enlever les ¿ je lance :

Code :
UPDATE MATABLE SET DESCRLONG = REPLACE(DESCRLONG,CHR(191))
Le résultat est sans appel et Oracle me jette un
Citation:
ORA-00932: inconsistent datatypes
Une rapide recherche sur la toile m'indique que la fonction REPLACE ne marche pas sur des données de type long (ben oui ç'aurait été trop simple hein ) mais que sur du varchar2, char etc ...

Question simple : l'un(e) d'entre vous aurait-il (ou elle) une brillante idée pour faire des remplacements de caractères indésirables dans cette colonne de type long ?

Ha oui j'allais oublier ... Oracle 9.2.0.7 (nls_language = american, nls_territory = america, nls_characterset = WE8ISO8859P15 .... rien de très exotique en somme)

Par avance merci à celles et ceux qui prendront un peu de temps pour m'aider dans ma démarche
Phénélas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2007, 19h42   #2
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
transformation en CLOB et replace
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2007, 10h11   #3
Invité de passage
 
Inscription : septembre 2006
Messages : 8
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 8
Points : 2
Points : 2
Citation:
Envoyé par Fred_D
transformation en CLOB et replace
malheureusement je ne peut pas modifier la structure de la table, il s'agit d'une table standard d'un ERP
Phénélas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2007, 10h52   #4
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
Pourquoi ne pas procéder de la manière suivante :
- créer une colonne temporaire dans cette table de type VARCHAR2 dans laquelle tu copies le contenu de ta colonne LONG
- appliquer ton REPLACE sur la colonne en VARCHAR2
- copier les données de la colonne VARCHAR2 vers celle en LONG
- supprimer la colonne temporaire

Il ne s'agit que d'une suggestion et je n'ai pas testé ma démarche donc je ne garantis pas que ce soit faisable.
__________________
Modérateur des forums Oracle et Langage SQL
Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2007, 10h59   #5
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
ou création d'une table d'une seule colonne pour faire le TO_LOB, REPLACE et update de la table d'origine... gare aux perfs
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2007, 11h53   #6
Invité de passage
 
Inscription : septembre 2006
Messages : 8
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 8
Points : 2
Points : 2
@Magnus : j'y ai songé mais il y-a trop de données dans mon champ long pour pouvoir le passer dans un varchar2 (limité à 4000 caractères il me semble)

@Fred_D : je vais tester la piste que tu suggères, merci
Phénélas est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h48.


 
 
 
 
Partenaires

Hébergement Web