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

Oracle Discussion :

ORA-00932 Replace sur un champ Long impossible ?


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 8
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE MATABLE SET DESCRLONG = REPLACE(DESCRLONG,CHR(191))
    Le résultat est sans appel et Oracle me jette un
    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

  2. #2
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    transformation en CLOB et replace

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 8
    Par défaut
    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

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    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.

  5. #5
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    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

  6. #6
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 8
    Par défaut
    @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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. My Report : obtenir un Top sur un champ calculé impossible ?
    Par Invité dans le forum Autres outils décisionnels
    Réponses: 5
    Dernier message: 04/06/2014, 09h51
  2. Insert select sur un champ Long
    Par pev15 dans le forum SQL
    Réponses: 10
    Dernier message: 06/03/2009, 16h43
  3. Réponses: 9
    Dernier message: 20/06/2007, 17h34
  4. Recherche sur un champ LONG
    Par Endymion222 dans le forum Oracle
    Réponses: 14
    Dernier message: 29/11/2005, 14h31
  5. select sur un champ de type LONG
    Par ppd dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/09/2004, 18h19

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