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

Krikoumam Messages postés 5 Statut Membre -  
jee pee Messages postés 31926 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 ?

3 réponses

  1. jee pee Messages postés 31926 Date d'inscription   Statut Modérateur Dernière intervention   9 992
     

    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
    1. Krikoumam Messages postés 5 Statut Membre
       

      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
      1. jee pee Messages postés 31926 Date d'inscription   Statut Modérateur Dernière intervention   9 992 > Krikoumam Messages postés 5 Statut Membre
         

        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
  2. Krikoumam Messages postés 5 Statut Membre
     

    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
  3. jee pee Messages postés 31926 Date d'inscription   Statut Modérateur Dernière intervention   9 992
     

    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
    1. jee pee Messages postés 31926 Date d'inscription   Statut Modérateur Dernière intervention   9 992
       

      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
      1. Krikoumam Messages postés 5 Statut Membre > jee pee Messages postés 31926 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
      2. jee pee Messages postés 31926 Date d'inscription   Statut Modérateur Dernière intervention   9 992 > Krikoumam Messages postés 5 Statut Membre
         
        SELECT champ, HEX(champ) FROM table 
        1
    2. Krikoumam Messages postés 5 Statut Membre
       

      Cool merci !

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

      0