Stringhe letterali e sequenze di Escape in PostegreSQL

Tentando di inserire una stringa contenente il simbolo di escape '\n' in PostegreSQL ottengo un warning, ad es. facendo la seguente insert

create table EscapeTest (text varchar(50));

insert into EscapeTest (text) values ('Questo è il primo rigo \n e questo è il secondo');

Ottengo il seguente messaggio di warning:

WARNING:  nonstandard use of escape in a string literal

Premettendo che faccio riferimento a PSQL 8.2 qualcuno sà perché avviene questo?

In Corso 2
PostgreSQL 31-05-2018 1 Risposta 1411 Visite 0
Giovanni Campedi

Giovanni Campedi

Autore di questa domanda

Risposte ( 1 approvate )

  1. Caterina Stoletti
    0
    31-05-2018 17:57:00
    Rispondi

    Nonostante il warning la stringa viene comunque inserita all'interno di PostgreSQL, però potrebbe non essere ritornata correttamente; cercando in rete viene suggerito di precedere la stringa con il carattere 'E', questo fa si che il warning non venga più emesso, in pratica devi fare la insert così

    insert into EscapeTest (text) values (E'Questo è il primo rigo \n e questo è il secondo');

    Il problema nasce dall'escape new line '\n' presente nella stringa, questo va trattato correttamente anteponendogli un backslash prima di inserirlo, quindi la versione finale e corretta della tua insert è

    insert into EscapeTest (text) values (E'Questo è il primo rigo \\n e questo è il secondo');

Rispondi

Per poter rispondere a questa domanda, devi essere registrato e loggato sul sito, dopodichè compila il box sottostante cercando di essere il più chiaro ed esauriente possibile, la tua risposta potrebbe essere la soluzione che l'utente cerca ed essere contrassegnata come migliore, consentendoti così di ottenere punti ed autorevolezza.

 Domanda Precedente

 Elenco Domande 

Domanda Successiva