カラム内に含まれる改行コードを消す必要がありました。
その時の方法を備忘録として残したいと思います。
改行コードについては以下でまとめています。
改行コードを置換、削除する方法
改行を置換するのに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, ‘通常’, ‘改行なし’);
作成したテーブル。
itemid | name | memo |
---|---|---|
1 | 改行コードテスト test | 改行テスト |
2 | 通常 | 改行なし |
UPDATE文で改行を置換
UPDATE item SET name = regexp_replace(name, ‘\r|\n|\r\n’, ‘置換’) WHERE name like ‘%’ || chr(10) || ‘%’ or name like ‘%’ || chr(13) || ‘%’ ;
改行をわかりやすく「置換」という文字に変換しています。
■ 結果
itemid | name | memo |
---|---|---|
1 | 改行コードテスト置換test | 改行テスト |
2 | 通常 | 改行なし |
改行が置換に変換されました。