Postgresql - vues PGAdmin - ajout en début de ligne dans un

Krikoumam Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
jee pee Messages postés 41551 Date d'inscription   Statut Modérateur Dernière intervention   -

Bonjour,

j'ai ce genre de datas dans un champ "commentaires" une table :

Lieu dit: Le Pleney et divers
dégagement de la chauffiaz à la pelle araignée;
un hôtel légerement inondé (construit sans autorisation ?);
un mur de soutènnement déstabilisé;
Une salle du palais des sports inondée parremontées des eaux pluviales.


Je voudrais pouvoir mettre * devant chaque ligne après. Du style :

*Lieu dit: Le Pleney et divers
*dégagement de la chauffiaz à la pelle araignée;
*un hôtel légerement inondé (construit sans autorisation ?);
*un mur de soutènnement déstabilisé;
*Une salle du palais des sports inondée parremontées des eaux pluviales.



Quelqu'un a une idée SVP ?

A voir également:

3 réponses

jee pee Messages postés 41551 Date d'inscription   Statut Modérateur Dernière intervention   9 724
 

Bonjour,

Si c'est un seul champ et qu'à l'édition il se présente ainsi c'est que la chaine contient des sauts de ligne.

Il existe différentes possibilités de caractères invisibles : LF (line feed), CRLF(carriage return + line feed) hexa = OD OA ou en unix \r \n

Il faudrait analyser la chaine pour voir le/s caractère/s présent/s

on peut utiliser ASCII(chaine) pour avoir la valeur numérique d'un caractère. Après il suffira de faire un remplacer ce caractère par lui même + *


0
Krikoumam Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 

Bjr, merci déjà d'voir pris le temps de répondre.

C'est bien un seul champ dans ma table.

La fin de chaque ligne est marquée par un CHR(10).

J'arrive à mettre une * devant la 1ère ligne.

Mais comment en Postgrsql  fait-on pour mettre cette * devant chaque début de ligne après un Chr(10)

0
jee pee Messages postés 41551 Date d'inscription   Statut Modérateur Dernière intervention   9 724 > Krikoumam Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 

en sql, avec une fonction pour remplacer une chaine par une autre (voir ce qui existe dans Postgresql) on peut avoir quelque chose comme

SELECT REPLACE(champ,char(10),CONCAT(char(10),'*')) from ....
1
Krikoumam Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 

J'ai essayé mais cela ne me change que la 1ère ligne. J'ai cru comprendre que pour une répétition il fallait utiliser des replace en chaine. Sauf que je ne connais pas le nombre de lignes

0
jee pee Messages postés 41551 Date d'inscription   Statut Modérateur Dernière intervention   9 724
 

Dans Mysql REPLACE() fonctionne pour toutes les occurrences de la chaine recherchée : https://www.w3schools.com/sql/func_mysql_replace.asp

voir les fonctions de Postegrsql


0
jee pee Messages postés 41551 Date d'inscription   Statut Modérateur Dernière intervention   9 724
 

cela semble aussi le cas : https://www.postgresqltutorial.com/postgresql-string-functions/postgresql-replace/

la chaine ne contient peut être pas ce que tu crois, as tu fait une analyse en hexa de l'ensemble de la chaine ?

0
Krikoumam Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   > jee pee Messages postés 41551 Date d'inscription   Statut Modérateur Dernière intervention  
 

une analyse en hexa de l'ensemble de la chaine  : non je n'ai pas fait .... Je ne sais pas vraiment. Je n'ai pas encore beaucoup d'expérience en Postgresql

0
jee pee Messages postés 41551 Date d'inscription   Statut Modérateur Dernière intervention   9 724 > Krikoumam Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
SELECT champ, HEX(champ) FROM table 
1
Krikoumam Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 

Cool merci !

Je vais réessayer .... Je mettrais le résultat !

0