文字列の置換
列の中の文字を別の文字に置き換えます。表記のゆれをそろえる、余分な記号を消す、といった使い方です。
分析プロジェクトとの違い
| 見るところ | 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)
設定 — この機能で , を消してから、列の型変更で数値にする
出力 — 計算できる数値列