SQLで半角 全角 変換 SQL を実行したい場面は、顧客データの正規化・文字種統一・基幹システム間のデータ連携などで非常に多く発生します。
カタカナ・英数字・記号などは半角/全角の表記ゆれが多く、SQLだけで統一できるとバッチ処理やETLの品質が向上します。
本記事では、Oracle・SQL Server・PostgreSQL・MySQLといった主要DBMSごとに
SQLだけで行う半角⇔全角変換の方法(半角 全角 変換 SQL) をまとめてわかりやすく解説します。
🟦 1. 半角 全角 変換 SQL が必要になる理由
半角/全角の違いは以下の問題を引き起こします。
-
同じ文字でも別文字として扱われ、一致検索・JOINが失敗する
-
顧客名・住所・カナ項目で表記ゆれが大量発生
-
帳票やCSV出力の品質が揺れる
SQLで半角 全角 変換 SQL を実行して正規化 しておくと、後続処理が安定し、システム全体のデータ品質が高まります。
🟦 2. Oracleでの半角 全角 変換 SQL(CONVERT / TRANSLATE)
Oracleには完全な変換専用関数がありませんが、CONVERT と TRANSLATE の組み合わせで実現できます。
■ 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 | 半角→全角 | 全角→半角 |
|---|---|---|
| Oracle | CONVERT + TRANSLATE | TRANSLATE(要マッピング) |
| SQL Server | TRANSLATE | TRANSLATE |
| PostgreSQL | translate() | translate() |
| MySQL | REPLACE | REPLACE |
総じて SQLだけで半角 全角 変換 SQL を実現できる ものの、
DBMSごとに得意・不得意があるため、場面に応じて使い分けることが重要です。
