PostgreSQLで改行コードを置換、削除する方法!

カラム内に含まれる改行コードを消す必要がありました。
その時の方法を備忘録として残したいと思います。

改行コードについては以下でまとめています。

改行コードを置換、削除する方法

改行を置換するのにregexp_replace()を使います。
また置換した値をUPDATE文を使って更新します。

構文

UPDATE テーブル名 SET カラム名 = regexp_replace(カラム名, '\r|\n|\r\n', '') WHERE カラム名 like '%' || chr(10) || '%' or カラム名 like '%' || chr(13) || '%';

regexp_replace(カラム名, '\r|\n|\r\n', '')で正規表現で改行を指定し空の値に置換しています。

where以降の改行の取得方法については以下で詳しく書いています。

実際に改行のある列を置換してみる

テスト環境で実際に取得してみましょう。

準備

-- CREATE文 item テーブル
CREATE TABLE item (
ItemID numeric(8, 0) unique not null,
Name character varying (30),
memo character varying (20),
primary key(ItemID)
);
-- itemテーブル用INSERT文
insert into item
values(0001, '改行コードテスト
test', '改行テスト'),
(0002, '通常', '改行なし');

作成したテーブル。

itemidnamememo
1改行コードテスト
test
改行テスト
2通常改行なし
item

UPDATE文で改行を置換

UPDATE item SET name = regexp_replace(name, '\r|\n|\r\n', '置換') WHERE name like '%' || chr(10) || '%' or name like '%' || chr(13) || '%' ;

改行をわかりやすく「置換」という文字に変換しています。

■ 結果

itemidnamememo
1改行コードテスト置換test改行テスト
2通常改行なし

改行が置換に変換されました。

PostgreSQL, SQL

Posted by Nakamoto