Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1412 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  SQL : Cast d'un long en varchar2

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

SQL : Cast d'un long en varchar2

n°855234
badbatin
Posté le 21-09-2004 à 20:45:28  profilanswer
 

Bonjour,
j'ai un table avec un champ de type LONG (super important) qui contient des valeurs du genre '0;1;toto;modifiés;5;x'.
Le pb, c'est que suite à un pb technique, il y a un bon nombre d'insert qui ont été fait sans le NLSLANG French ... du coup, tous les accents de mon champ ont disparu.
 
Je cherche à mettre en place une requete qui rajoute les accents. L'idée est de dire, si je vois la chaine "modifies", je la transforme en "modifiés". La fonction REPLACE fonctionne très bien .... mais sur les chaines de caractères, pas sur les champs de type LONG.
 
en gros je voudrais pouvoir faire :
SELECT REPLACE(monchamplong,'modifies','modifiés) FROM matable
 
alors, j'ai essayé de faire un cast ou un convert mais sans succès (pb d'inconsistance, à moins que je m'y prenne mal). :heink:
 
Qqun a une idée ? :??:
 
Merci (ca m'éviterait une semaine de boulot chiant) !!!! ;)
 

mood
Publicité
Posté le 21-09-2004 à 20:45:28  profilanswer
 

n°855448
Arjuna
Aircraft Ident.: F-MBSD
Posté le 22-09-2004 à 09:53:23  profilanswer
 

Je sais qu'Oracle 8i ne sait pas faire d'oppération sur un LONG. Y'a malheureusement de grandes chances pour que ça n'ait pas changé depuis :/

n°855540
jielbi
Posté le 22-09-2004 à 11:44:44  profilanswer
 

Effectivement, tu ne peux absolument rien faire sur les types LONG.
Par contre, si tu es en 8i, tu peux convertir ton champ en CLOB (passe par une table temporaire) avec la fonction TO_LOB(). Je pense (mais c'est à vérifier) que le package dbms_lob doit contenir les fonctions de gestion des chaines de caractères qui t'intéressent...

n°855569
jielbi
Posté le 22-09-2004 à 12:29:02  profilanswer
 

Après quelques vérifs, j'ai pas trouvé d'équivalent de REPLACE dans le package dbms_lob.
Mais on peut peut etre se débrouiller autrement (qui a dit bricolage ? :D  )
Tu récupères donc ton champ dans un CLOB avec la fonction TO_LOB(). Puis avec les fonctions GETLENGTH() et SUBSTR() du package DBMS_LOB, tu rebalances le contenu dans une variable VARCHAR2 et le tour est joué, il ne te reste plus qu'à faire un REPLACE sur ton varchar...
A mon avis, il n'existe pas d'autre solution (je ne parle pas de se palucher à la mimine toutes tes lignes les unes après les autres bien sur... ;) )


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  SQL : Cast d'un long en varchar2

 

Sujets relatifs
problème pour changer de place un fichier log sous SQL server 2000 ...[SQL] Comment éviter une division par 0 (zéro) --> résolu par DECODE()
insertion de données dans une table sqlMise a jour automatique de table SQL, Help plz...
Pb : You have an error in your SQL syntax ... arghhhhh!Comment créer des fonctions PL/SQL
requête SQL REPLACECherche un editeur graphique de table pour ORACLE SQL
Mise à serveurs jour SQL et oracle[C++] pb de dynamic cast
Plus de sujets relatifs à : SQL : Cast d'un long en varchar2


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR