web-dev-qa-db-ja.com

テキストフィールドを更新するときにpostgresqlに改行を挿入します

Postgresqlデータベースのテーブルのテキストフィールドを更新しようとしています。

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

私の意図した結果は、セルが次のようになることです。

 1行目
 2行目

上記の構文はエラーを返します。

36
alexyes

chr(10)の代わりにchar(10)が必要です。

これは間違った改行である可能性があるため、注意してください。 「正しい」改行は、それを使用するクライアントに依存します。 Mac、Windows、およびLinuxはすべて異なる改行を使用します。ブラウザは<br />

PostgreSQL 9.1+の場合、このような更新を書くのが最も安全かもしれません。しかし、以下にリンクされているドキュメントを読んでください。

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

9.1+では、「 standard_conforming_strings 」のデフォルト値は「on」です。

show standard_conforming_strings;

リテラル改行を使用します(standard_conforming_strings = on、つまり、最近のPostgreSQLを使用しています):

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

または、エスケープを使用できます:

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

私のバージョンのpostgresでは、\ nは改行に対して機能しませんでしたが、代わりに\ r\nを使用しました:

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