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

Requêtes PostgreSQL Discussion :

Champ TEXT sur plusieurs lignes


Sujet :

Requêtes PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de Aizen64
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    563
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 563
    Par défaut Champ TEXT sur plusieurs lignes
    Bonjour,

    j'ai parcouru la doc de PostgreSQL et la FAQ de developez.com sans trouver une réponse à ma question :

    Comment faire du INSERT INTO sur un champ de type TEXT ? Pour du VARCHAR ça donne : 'du texte', par contre j'aimerai pouvoir faire avec un TEXT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    INSERT INTO matable VALUES ("Un peu de texte ici.
     
     
    Sur plusieurs lignes etc...
    ...");
    Les double guillemets ne sont pas valdes pour tu texte, y a t-il un moyen de contourner cette limitation ?

    EDIT : La souttion est-elle ici ?

    http://www.postgresql.org/docs/9.1/s...x-lexical.html

    Point 4.1.1.2.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Avec des simples quotes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    create table test_text (c1 integer, c2 varchar(10), c3 text);
     
    insert into test_text values
    (1, 'ABC', 'Un peu de texte ici.
     
     
    Sur plusieurs lignes etc...');
     
     
    select c1, c2, c3
      from test_text;
     
    | c1 |  c2 |                                                   c3 |
    |----|-----|------------------------------------------------------|
    |  1 | ABC | Un peu de texte ici.
     
     
    Sur plusieurs lignes etc... |

  3. #3
    Membre très actif Avatar de Aizen64
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    563
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 563
    Par défaut
    Effectivement, le tout fonctionne correctement, les double quotes sont considérés comme des guillemets normaux, par contre, je n'ai pas réussi à y insérer des simple quotes dans le champ, Postgre n'a pas l'air d'apprécier l'échappement de caractère : \'.

    La source de la documentation est celle que j'ai posté au départ.

    Citation :
    Any other character following a backslash is taken literally. Thus, to include a backslash character, write two backslashes (\\). Also, a single quote can be included in an escape string by writing \', in addition to the normal way of ''.

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 591
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 591
    Billets dans le blog
    10
    Par défaut
    Essayez en doublant la quote

  5. #5
    Membre Expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Billets dans le blog
    8
    Par défaut
    Salut
    Essaye le double dollar $$
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    insert into test_text values
    (1, 'ABC', $$Un peu de texte ici.
     
     
    Sur plusieurs lignes etc...$$);
    @+

  6. #6
    Membre très actif Avatar de Aizen64
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    563
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 563
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Essayez en doublant la quote
    J'ai essayé de 2 manières :

    Cette partie ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO maTable VALUES('du texte avec des simple quotes ici : \''');
    Celle ci fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO maTable VALUES('du texte avec des simple quotes ici : '');
    Ton indication est donc correcte, pas très cohérent par rapport à ce que mentionne la documentation mais c'est peut-être une mauvaise interprétation de ma part. Merci !

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 995
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 995
    Billets dans le blog
    6
    Par défaut
    ça fait partie du langage SQL de base depuis sa création !!!
    Votre syntaxe est fausse car vous ne terminez pas la chaine...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO maTable VALUES('du texte avec des simple quotes ici : ''');
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    INSERT INTO maTable VALUES('du texte avec des simple quotes ici : 
    ''');
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO maTable VALUES('du texte avec des simple quotes ici : ajourd''hui le fait d''apprendre SQL rebute quelqu''un');

    Apprenez le langage SQL. Mon site comme mon bouquin, peuvent vous y aider !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Par défaut
    Citation Envoyé par Aizen64 Voir le message
    je n'ai pas réussi à y insérer des simple quotes dans le champ, Postgre n'a pas l'air d'apprécier l'échappement de caractère : \'.

    La source de la documentation est celle que j'ai posté au départ.

    Citation :
    Any other character following a backslash is taken literally. Thus, to include a backslash character, write two backslashes (\\). Also, a single quote can be included in an escape string by writing \', in addition to the normal way of ''.
    Il faut remettre cette citation dans son contexte. Le titre du paragraphe est String Constants with C-style Escapes et il commence par:

    PostgreSQL also accepts "escape" string constants, which are an extension to the SQL standard. An escape string constant is specified by writing the letter E (upper or lower case) just before the opening single quote, e.g., E'foo'
    Quand on n'utilise pas ce formalisme de chaîne préfixé par E, le backslash est un caractère normal et les règles mentionnées dans ce paragraphe ne s'appliquent pas.

  9. #9
    Membre très actif Avatar de Aizen64
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    563
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 563
    Par défaut
    Exact. C'est un peu la problématique de n'avoir lu la doc que partiellement.

Discussions similaires

  1. 8i : sql loader et champ texte sur plusieurs lignes
    Par naonedboy dans le forum SQL*Loader
    Réponses: 1
    Dernier message: 23/11/2005, 10h07
  2. [jtable] Champs texte sur pls ligne dans cellule
    Par doudine dans le forum Composants
    Réponses: 8
    Dernier message: 17/11/2005, 12h36
  3. [JButton] Texte sur plusieurs lignes
    Par leminipouce dans le forum Composants
    Réponses: 5
    Dernier message: 19/10/2005, 10h17
  4. [CR10 ]un texte sur plusieurs lignes?
    Par speed034 dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 28/09/2005, 07h26
  5. Réponses: 2
    Dernier message: 21/09/2005, 12h18

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