Littéraux de chaîne et caractères d'échappement dans postgresql

Tenter d'insérer un caractère d'échappement dans un tableau génère un avertissement.

Par exemple :

create table EscapeTest (text varchar(50));

insert into EscapeTest (text) values ('This is the first part 
 And this is the second');

Produit l'avertissement :

WARNING:  nonstandard use of escape in a string literal

(Utilisation de PSQL 8.2)

Quelqu'un sait comment contourner cela ?

请先 登录 后评论

2 réponses

Community

Question vraiment stupide : êtes-vous sûr que la chaîne est tronquée, et pas seulement cassée au saut de ligne que vous spécifiez (et peut-être ne s'affiche pas dans votre interface) ? Par exemple, vous attendez-vous à ce que le champ s'affiche comme

Ceci sera inséré Cela ne sera pas être

ou

Ceci sera inséré

Ce ne sera pas

De plus, quelle interface utilisez-vous ? Est-il possible que quelque chose en cours de route mange vos barres obliques inverses ?

请先 登录 后评论
Milen A. Radev

Je trouve qu'il est très peu probable que Postgres tronque vos données en entrée - il les rejette ou les stocke telles quelles.

milen@dev:~$ psql
Welcome to psql 8.2.7, the PostgreSQL interactive terminal.

Type:  copyright for distribution terms
       h for help with SQL commands
       ? for help with psql commands
       g or terminate with semicolon to execute query
       q to quit

milen=> create table EscapeTest (text varchar(50));
CREATE TABLE
milen=> insert into EscapeTest (text) values ('This will be inserted 
 This will not be');
WARNING:  nonstandard use of escape in a string literal
LINE 1: insert into EscapeTest (text) values ('This will be inserted...
                                              ^
HINT:  Use the escape string syntax for escapes, e.g., E'
'.
INSERT 0 1
milen=> select * from EscapeTest;
          text
------------------------
 This will be inserted
  This will not be
(1 row)

milen=>
请先 登录 后评论
  • 28 abonnés
  • 0 favoris,258 Feuilleter
  • rjohnston posée à 2023-03-02 14:43