2014-10-29 10 views
27

Próbuję zaktualizować pole tekstowe w tabeli mojej bazy danych postgresql.Wstawianie linii podziału w postgresql podczas aktualizowania pola tekstowego

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

My przeznaczone Powoduje to, że komórka będzie wyglądać następująco:

 
First Line 
Second line 

Powyższa składnia zwraca błąd.

+2

Operatorem łączenia ciągów w Postgresql jest "||", przy okazji. –

Odpowiedz

37

Chcesz chr(10) zamiast char(10).

Należy zachować ostrożność, ponieważ może to być niewłaściwy znak nowej linii. "Prawy" znak nowej linii zależy od klienta, który ją zużywa. Mac, Windows i Linux używają różnych nowych linii. Przeglądarka spodziewa się <br />.

Może być najbezpieczniej napisać taką aktualizację dla PostgreSQL 9.1+. Ale przeczytaj dokumenty powiązane poniżej.

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

Domyślna wartość 'standard_conforming_strings' jest 'on' w 9.1+.

show standard_conforming_strings; 
+3

Użyłem CONCAT ("Tekst 1", chr (13), "Tekst 2") i zadziałało. Dzięki! – alexyes

19

Użyj dosłownego znaku nowej linii (jeśli standard_conforming_strings = on, to znaczy, że jesteś na ostatnim PostgreSQL):

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

lub można użyć ucieczki:

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

W mojej wersji postgres, \ n nie działał dla podziału wiersza i użyłem \ r \ n zamiast tego:

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