「データ整形」タグアーカイブ

SQL:半角 全角 変換 SQLだけで行う方法(Oracle / SQL Server / PostgreSQL)

SQLで半角 全角 変換 SQL を実行したい場面は、顧客データの正規化・文字種統一・基幹システム間のデータ連携などで非常に多く発生します。
カタカナ・英数字・記号などは半角/全角の表記ゆれが多く、SQLだけで統一できるとバッチ処理やETLの品質が向上します。

本記事では、Oracle・SQL Server・PostgreSQL・MySQLといった主要DBMSごとに
SQLだけで行う半角⇔全角変換の方法(半角 全角 変換 SQL) をまとめてわかりやすく解説します。


🟦 1. 半角 全角 変換 SQL が必要になる理由

半角/全角の違いは以下の問題を引き起こします。

  • 同じ文字でも別文字として扱われ、一致検索・JOINが失敗する

  • 顧客名・住所・カナ項目で表記ゆれが大量発生

  • 帳票やCSV出力の品質が揺れる

SQLで半角 全角 変換 SQL を実行して正規化 しておくと、後続処理が安定し、システム全体のデータ品質が高まります。


🟦 2. Oracleでの半角 全角 変換 SQL(CONVERT / TRANSLATE)

Oracleには完全な変換専用関数がありませんが、
CONVERTTRANSLATE の組み合わせで実現できます。


■ 2-1. 半角 → 全角(カナ)

Oracle独自の US7ASCII → JA16SJIS を使う裏技です。

※ 半角カナ → 全角カナに有効(英数字は別途処理)


■ 2-2. 半角 → 全角(英数字)


■ 2-3. 全角 → 半角

Oracleは全角→半角カナが標準で無いため、TRANSLATEでマッピングする必要があります。


🟩 3. SQL Serverでの半角 全角 変換 SQL(TRANSLATE)

SQL Server 2017以降は TRANSLATE が使用可能で、Oracleより簡単です。


■ 3-1. 半角 → 全角


■ 3-2. 全角 → 半角


🟧 4. PostgreSQLでの半角 全角 変換 SQL(translate関数)

PostgreSQLも Oracle / SQL Server と同様に translate() を使用します。


■ 4-1. 半角 → 全角


■ 4-2. 全角 → 半角


🟥 5. MySQLでの半角 全角 変換 SQL(REPLACE)

MySQLは専用関数がないため、REPLACE を多段適用します。


■ 5-1. 半角 → 全角(数字の例)

全変換を行う場合は、ストアド関数化が実務的です。


🟪 6. 実務で使える半角 全角 変換 SQL:関数化例(Oracle)


■ 半角 → 全角


■ 全角 → 半角


🧩 7. 半角 全角 変換 SQL を行う際の注意点

① 濁点・半濁点が合成文字として扱われる

例:パ = ハ + ゚

② DB文字コードで変換結果が異なる

Oracle(AL32UTF8 / JA16SJIS)では特に差が出やすい。

③ カナ変換はDBMSによって不得意

全角↔半角カナは、Oracleの CONVERT 技など固有の知識が必要。


✔ 結論:SQLだけで半角⇔全角変換は可能(ただしDB依存)

DBMS半角→全角全角→半角
OracleCONVERT + TRANSLATETRANSLATE(要マッピング)
SQL ServerTRANSLATETRANSLATE
PostgreSQLtranslate()translate()
MySQLREPLACEREPLACE

総じて SQLだけで半角 全角 変換 SQL を実現できる ものの、
DBMSごとに得意・不得意があるため、場面に応じて使い分けることが重要です。

【保存版】Excelで文字列を分割する方法(区切り位置&関数)

Excelで大量のデータを扱っていると「氏名を姓と名に分けたい」「住所から都道府県だけ抽出したい」といった場面がよくあります。
そんなときに便利なのが 文字列を分割する方法 です。

Excelには以下の2つの方法があります。

  1. 区切り位置 機能で一括分割

  2. 関数 で動的に分割

さらに Excel 365以降なら TEXTSPLIT 関数 を使うことで一気に処理できます。本記事では、それぞれの使い方をわかりやすく解説します。


1. 区切り位置を使って文字列を分割する方法

「区切り位置」は、セル内の文字列を スペース・カンマ・タブ などの区切り文字で分割し、複数列に展開する機能です。

手順

  1. 分割したいセル範囲を選択

  2. [データ] タブ → [区切り位置] をクリック

  3. 「区切り文字あり」を選んで [次へ]

  4. 区切り文字(スペース、カンマなど)を指定

  5. [完了] を押すと自動で分割

  • 「山田 太郎」 → 「山田」「太郎」に分割

  • 「東京都,新宿区,西新宿」 → 「東京都」「新宿区」「西新宿」に分割

メリット

  • ワンクリックで大量のセルを一気に処理可能

  • 初心者でも簡単

⚠️ デメリット

  • 元データが更新されても自動反映されない


2. 関数を使って文字列を分割する方法

データが更新されても動的に処理したい場合は 関数 を利用します。

代表的な関数

LEFT / RIGHT / MID 関数

  • =LEFT(文字列, 文字数) → 先頭から指定文字数を抽出

  • =RIGHT(文字列, 文字数) → 末尾から指定文字数を抽出

  • =MID(文字列, 開始位置, 文字数) → 任意の位置から文字を抽出

FIND / SEARCH 関数

  • =FIND(" ",A2) → セルA2のスペース位置を検索

  • SEARCH は大文字小文字を区別せず検索可能


3. TEXTSPLIT関数(Excel 365以降)

Excel 365以降では TEXTSPLIT を使えば一発です。

構文

=TEXTSPLIT(文字列, 区切り文字)

 
=TEXTSPLIT("山田 太郎"," ")

→ 「山田」「太郎」に分割

住所の例

=TEXTSPLIT("東京都 新宿区 西新宿"," ")

→ 「東京都」「新宿区」「西新宿」に分割

✅ シンプルで応用も簡単!


4. 古いExcelでTEXTSPLITを代替する方法

Excel 2016 / 2019 など TEXTSPLIT未対応のバージョンでは、LEFT / MID / RIGHT / FIND / LEN の組み合わせで対応できます。

氏名の分割(A2セルが「山田 太郎」の場合)

  • 姓(山田)

=LEFT(A2,FIND(" ",A2)-1)
  • 名(太郎)

=MID(A2,FIND(" ",A2)+1,LEN(A2)-FIND(" ",A2))

住所の分割(E2セルが「東京都 新宿区 西新宿」の場合)

  • 都道府県

=LEFT(E2,FIND(" ",E2)-1)
  • 市区町村

=MID(E2,FIND(" ",E2)+1,FIND(" ",E2,FIND(" ",E2)+1)-FIND(" ",E2)-1)
  • 町域

=RIGHT(E2,LEN(E2)-FIND(" ",E2,FIND(" ",E2)+1))

⚠️ 注意:スペースが「全角」で入力されている場合は、事前に

=SUBSTITUTE(E2," "," ")

で半角に置換してから使うと安定します。


5. 区切り位置と関数の使い分け

  • 一度だけ分割する場合 → 区切り位置が便利

  • 更新されるデータを扱う場合 → 関数を使うのがベスト

  • Excel 365以降のユーザー → TEXTSPLITで最速処理


まとめ

Excelで文字列を分割する方法は大きく分けて以下の3つ:

  • 区切り位置(手早く一括分割)

  • TEXTSPLIT関数(Excel 365以降)(最もシンプル)

  • LEFT / MID / RIGHT 関数の組み合わせ(古いバージョン対応)

環境や目的に合わせて最適な方法を選べば、日常業務がさらに効率化できます。

Excel:変更した書式設定をまとめて反映する方法

Excelで以下の様に文字列の書式で入力済の場合、セルの書式設定をまとめて数値へ変更しただけでは入力済の内容にまでは反映されません。

変更した書式に合わせて反映させるには1セルずつF2で編集モードへ変更してEnterで確定でも書式の反映はできますが、データ件数が多い場合は現実的ではありません。
こういう場合にまとめて設定した書式へ反映する方法をメモしておきます。

セルの書式設定をまとめて反映する方法

  1. まず書式設定したい範囲を選択して書式を文字列⇒数値へ変更します。
  2. この時点ではまだ入力済の内容はまだ変更後の書式に合わせて表示されてません。
  3. 列単位でまとめて書式を反映したい場合は変更したい範囲の列を選択してデータ ⇒ 区切り位置を選択します。
  4. 区切り位置指定ウィザード画面が表示されたら完了ボタンを選択します。
  5. これで以下のように列単位で変更した書式が反映された状態になります。

よくVLOOKUPなどで値は同じなのに文字列と数値で書式が違っているので上手く表示できていない場合などで結構役に立つ手段なので覚えておくと役に立ちます。

 

補足:書式変更後の注意事項

上記の方法により、入力済みセルの書式を文字列から数値形式などに一括変更できますが、次の点にもご留意ください:

  • 書式を変更した後も、セル内に「先頭にスペース」や「末尾に空白」が残っていると、数値として正しく扱われないことがあります。こうした場合は、TRIM() 関数や「置換」で空白を削除しておくと安心です。

  • また、セルが“文字列として既に保存”されていると、数値形式に書式を変更しても、Excel内部では文字列のまま扱われ続ける場合があります。その際は、別の空き列に =VALUE(対象セル) を使って数値化し、元の列を置き換える運用も検討してください。

  • 書式変更後、関連する数式(例:VLOOKUPSUMIF・ピボットテーブル)に影響が出る可能性があります。特に「文字列と数値で見た目が似ていても一致しない」「SUM範囲に数値が加算されない」といった症状が出たら、書式とデータ型の整合性を改めてチェックすることをおすすめします。

  • 最後に、データ量が非常に多い場合(数万行以上など)は、処理性能やメモリ消費も意識する必要があります。可能であれば作業前にファイルのバックアップをとり、作業途中での自動保存・復元ポイントを設定しておくと安心です。