コンテンツにスキップ

文字列の置換

列の中の文字を別の文字に置き換えます。表記のゆれをそろえる、余分な記号を消す、といった使い方です。

分析プロジェクトとの違い

見るところSQLビルダー分析プロジェクト
置換ルールの数1 つだけいくつでも足せる
置換前の文字1 つだけカンマ区切りで複数
対象列の型文字列の列だけ文字列・日付・日付時刻・時刻
正規表現ある(MySQL では使えない)ある

ルールを 2 つ以上当てたいときは、この機能のノードを並べてください。

入出力

ポート内容
入力データデータ
出力データデータ

設定項目

フォームの見出しの並び — 「結果の挿入先を設定」 → 「処理対象列を選択」 → 「置換ルールを設定」。条件によって出ない見出しもあります。

結果の挿入先を設定
新規列に挿入(既定)か既存列に上書き。
新規列名を入力
「新規列に挿入」のときに出ます。結果を入れる列の名前。
列を選択必須
「既存列に上書き」のときに出ます。この 1 項目が、置換する列と書き戻し先を兼ねます。
列を選択(処理対象列)
「新規列に挿入」のときに出ます。置換するもとの列。文字列の列だけ選べます。
正規表現を使用する
on にすると、置換前の指定を正規表現として扱います。
置換前の入力必須
「正規表現を使用する」が off のときに出ます。置き換えたい文字をそのまま書きます。
置換前の入力(正規表現)必須
「正規表現を使用する」が on のときに出ます。
置換後の入力
置き換えたあとの文字。空のままにすると、該当部分が消えます(画面にも「入力なしで空文字に置換」と出ます)。

置き換わる範囲

1 か所だけ置き換える設定はありません。 1 つの値の中に同じ文字が何度出てきても、まとめて扱われます。

どの文字を同じものとみなすかは、つなぎ先のデータベースに任されています。 nehan 側では何も加えていないので、思ったとおりに置き換わるかは実際に実行して確かめてください。

つなぎ先による違い

つなぎ先正規表現
MySQL使えません(実行するとエラーになります)
そのほか使えます

生成される SQL

PostgreSQL につないだ場合です。

ふつうの置換

SELECT "住所", REPLACE("住所", '東京都', '東京') AS "住所_整形"
FROM "customers"

正規表現での置換

SELECT "住所", REGEXP_REPLACE("住所", '[0-9]+', '', 'g') AS "住所_整形"
FROM "customers"

正規表現の書き方はつなぎ先のデータベースのものがそのまま使われます。 nehan 側で書き換えてはいないので、組まれた SQL をSQLプレビューで確かめてください。

エラーと対処

どのエラーも、設定を直してノードを実行し直せば消えます。

MySQL で正規表現を使った

MySQL につないだビルダーで「正規表現を使用する」を on にすると出ます。

mysqlではこの処理はサポートされていません

直し方 — 正規表現を off にして、ふつうの置換に書き換えてください。置き換えたい文字が何種類もあるときは、この機能のノードを並べてください。

新しい列の名前が空

「新規列に挿入」を選んで名前を入れずに実行すると出ます。

列名を入力してください

直し方 — 列名を入れてください。

上書き先の列が選ばれていない

「既存列に上書き」を選んで列を選んでいないと出ます。

列を選択してください

直し方 — 列を選んでください。

上流にない列が選ばれている

前のノードで列が消えたあとに実行すると出ます。

存在しない列が選択されています

直し方 — 対象列を選び直してください。

入力がつながっていない

前のノードがつながっていないと出ます。

カラムが選択されていません。条件を確認してください

直し方 — 入力にノードをつないでください。

対象列が選ばれていない

「新規列に挿入」で処理対象列が空のまま実行した場合です。翻訳された文言はなく、英語のまま出ます。

type insert is required column. but column is empty

直し方 — 処理対象列を選んでください。

よく使う例

1. 表記をそろえる

お題 — 東京都 と 東京 が混ざっている

入力 — 住所

設定 — 既存列に上書き → 住所、置換前 東京都、置換後 東京

出力 — 東京 にそろいます

2. 記号を消す

お題 — 電話番号のハイフンを取りたい

入力 — 電話番号(03-1234-5678)

設定 — 置換前 -、置換後は空のまま

出力 — ハイフンのない番号

3. 数字だけを消す

お題 — 住所から番地を落としたい

入力 — 住所(東京都新宿区1-2-3)

設定 — 正規表現を使用する を on、置換前 [0-9]+、置換後は空のまま

出力 — 数字が消えた住所

4. 元の列を残して整形する

お題 — もとの値も確かめたい

入力 — 住所

設定 — 新規列に挿入 → 住所_整形、処理対象列 住所

出力 — 住所 と 住所_整形 が並びます

5. 2 つのルールを順に当てる

お題 — (株) を 株式会社 に直し、さらに余分な空白も消したい

入力 — 会社名((株) nehan。) のあとに空白が 2 つ)

設定 — この機能のノードを 2 つ並べ、どちらも既存列に上書きする。1 つ目は置換前 (株) / 置換後 株式会社、2 つ目は置換前に空白 2 つ / 置換後に空白 1 つ

出力 — 1 つ目のあとが 株式会社 nehan、2 つ目のあとが 株式会社 nehan

空白が 3 つ以上並んでいるときは、2 つ目のノードをもう一度通してください。 「空白 2 つ → 1 つ」を 1 回当てても、3 つは 2 つにしかなりません。MySQL 以外なら、正規表現で [ ]+ → 空白 1 つにすれば 1 回で済みます

6. 置換してから数値にする

お題 — 1,200 のようなカンマ付きの金額を計算に使いたい

入力 — 金額(文字列。1,200)

設定 — この機能で , を消してから、列の型変更で数値にする

出力 — 計算できる数値列

関連