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

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 8
    Points : 5
    Points
    5
    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 sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

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

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

    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
    Points : 1 775
    Points
    1 775
    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.
    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

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    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
    Futur Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 8
    Points : 5
    Points
    5
    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 tanaka59 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