2014-10-29 18 views
27

Sto tentando di aggiornare un campo di testo in una tabella del mio database postgresql.Inserisci interruzione di riga in postgresql durante l'aggiornamento del campo di testo

UPDATE public.table SET long_text = 'First Line' + CHAR(10) + 'Second line.' WHERE id = 19; 

mio risultato atteso è che la cellula sarà simile a questa:

 
First Line 
Second line 

La sintassi sopra restituisce un errore.

+2

L'operatore di concatenazione di stringhe in Postgresql è "||", a proposito. –

risposta

37

Si desidera chr(10) anziché char(10).

Prestare attenzione a questo, perché potrebbe essere il newline sbagliato. La newline "giusta" dipende dal client che la consuma. Mac, Windows e Linux utilizzano tutti i newline diversi. Un browser si aspetta <br />.

Potrebbe essere più sicuro scrivere l'aggiornamento in questo modo per PostgreSQL 9.1+. Ma leggi i documenti collegati qui sotto.

UPDATE public.table 
SET long_text = E'First Line\nSecond line.' 
WHERE id = 19; 

Il valore predefinito di 'standard_conforming_strings' è 'on' in 9.1+.

show standard_conforming_strings; 
+3

Ho usato CONCAT ('Testo 1', chr (13), 'Testo 2') e ha funzionato. Grazie! – alexyes

19

Utilizzare un ritorno a capo letterale (se standard_conforming_strings = on, vale a dire sei in una recente PostgreSQL):

UPDATE public.table 
SET long_text = 'First Line 
Second line.' 
WHERE id = 19; 

oppure è possibile utilizzare una via di fuga:

UPDATE public.table 
SET long_text = E'First Line\nSecond line.' 
WHERE id = 19; 
0

Nella mia versione di postgres, \ n non ha funzionato per l'interruzione di riga e ho usato invece \ r \ n, in questo modo:

UPDATE public.table 
SET long_text = E'First Liner\r\nSecond line.' 
WHERE id = 19;