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 09/10/2007, 14h59   #1
Futur Membre du Club
 
Inscription : octobre 2007
Messages : 58
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 58
Points : 18
Points : 18
Par défaut Oracle10g: remplacer retour chariot (\n) dans chaine de caracteres

bonjour,

J'ai une colonne définié en VARCHAR2(2000).
Certaines données comportent des retours chariots, représentés sous SQLPlus par des "petits carrés noirs".
J'ai fait un SELECT de cette colonne redirigé vers un fichier texte.
A l'ouverture de ce fichier dans un éditeur de texte, ces "petits carrés noirs" ont été interprétés par un retour chariot (\n).

Je souhaite donc remplacer, dans mon SELECT, ces retour chariots par des espaces.
J'ai essayé :

replace(cnt.OBSERVATIONS, '\n',' ')

mais cela ne fonctionne pas.

Pouvez vous m'aider ?
Merci d'avance.

Isn44.
isn44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 15h11   #2
Membre régulier
 
Inscription : avril 2007
Messages : 81
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : avril 2007
Messages : 81
Points : 91
Points : 91
Envoyer un message via MSN à sefaxe82
Bonjour,

Essaye : replace(cnt.OBSERVATIONS, CHAR(13),' ')

J'espère que l'instruction va marcher...
sefaxe82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 15h25   #3
Futur Membre du Club
 
Inscription : octobre 2007
Messages : 58
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 58
Points : 18
Points : 18
Par défaut Tjrs même pb

Désolée, cela ne fonctionne pas.

J'ai essayé un sous SQLPlus:

select replace(observations,CHAR(13),' ') from fds_cnt;
=> ORA-00936: expression absente.

alors que
select replace(observations,'n',' ') from fds_cnt;
=> fonctionne.

A noter:
- Mes requetes sont dans un fichier.sql
- Ce fichier.sql est appelé dans un fichier_decharger.bat, comme suit:
sqlplus mon_user/mon_password@MaBase @%DIRSQL%\fichier.sql > %PRODRPT%\fichier.log

merci quand meme.
Autre idée?

Isn44.
isn44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 15h31   #4
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Conseil

Informations forums :
Inscription : janvier 2004
Messages : 2 866
Points : 3 448
Points : 3 448
chr(10) et chr(13)
__________________
Un problème sans solution est un problème mal posé

Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 15h36   #5
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 533
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 533
Points : 6 469
Points : 6 469
chr(10) pour le retour chariot.
__________________
Rédacteur Oracle (Oracle ACE)
Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
Je ne réponds pas aux questions techniques par MP
Blogs: Forms-PL/SQL-J2EE - Forms Java Beans
SheikYerbouti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 15h47   #6
Futur Membre du Club
 
Inscription : octobre 2007
Messages : 58
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 58
Points : 18
Points : 18
Par défaut tjrs pas...

désolée,

replace(cnt.OBSERVATIONS, CHAR(10),' ')

sous SQLPlus:
=> pas d'erreur
=> mais les "petits carrés noirs" sont toujours là

En utilisant mon fichier SQL:
=>Aucun remplacement de retour chariot dans le fichier.txt


Autre idée ?
isn44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 15h59   #7
Futur Membre du Club
 
Inscription : octobre 2007
Messages : 58
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 58
Points : 18
Points : 18
Par défaut j'ai trouvé !!!!



désolée PlaineR, je n'avais pas compris ta réponse.


En fait il fallait remplacer les chr(10) ET chr(13) par un espace:

Les lignes finissent par un passage à la ligne (chr(10)) et un retour chariot (char(13) ).


ma solution est donc:
select replace(replace(observations,chr(10),' '),chr(13),' ') from fds_cnt

(si qlqn connait une instruction plus propre, je prend....)


Merci à tous !
isn44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 16h02   #8
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 453
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 453
Points : 4 213
Points : 4 213
Code :
1
2
3
SELECT REPLACE(REPLACE(observations,CHR(10)),CHR(13)) FROM fds_cnt
ou 
SELECT TRANSLATE(observations,' ' || CHR(10) || CHR(13), ' ') FROM fds_cnt
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 16h04   #9
Membre régulier
 
Inscription : avril 2007
Messages : 81
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : avril 2007
Messages : 81
Points : 91
Points : 91
Envoyer un message via MSN à sefaxe82
pardon, essaye CHR(10) (CHR sans la lettre A)

donc l'instruction est la suivante :
Code :
REPLACE(cnt.OBSERVATIONS, CHR(10),' ')
normalement ça devrait fonctionner
sefaxe82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 16h07   #10
Membre confirmé
 
Avatar de DAB.cz
 
Inscription : octobre 2006
Messages : 221
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 221
Points : 214
Points : 214
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
SQL> SELECT 'a'||chr(13)||chr(10)||'b' FROM dual;
 
'A'|
----
a
b
 
 
SQL> SELECT dump ('a'||chr(13)||chr(10)||'b') FROM dual;
 
DUMP('A'||CHR(13)||CHR(1
------------------------
Typ=1 Len=4: 97,13,10,98
 
SQL> SELECT REPLACE (REPLACE ('a'||chr(13)||chr(10)||'b', chr (13)), chr (10)) FROM dual;
 
RE
--
ab
 
SQL> SELECT dump (REPLACE (REPLACE ('a'||chr(13)||chr(10)||'b', chr (13)), chr (10))) FROM dual;
 
DUMP(REPLACE(REPLA
------------------
Typ=1 Len=2: 97,98
Ca doit fonctionner!

DAB
DAB.cz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 16h07   #11
Futur Membre du Club
 
Inscription : octobre 2007
Messages : 58
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 58
Points : 18
Points : 18
Par défaut merci!

je conserve ma solution car elle remplace les LF et CR par un espace.

isn44 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 22h15.


 
 
 
 
Partenaires

Hébergement Web