Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

SQLで全角・半角の変換をする

SQLでテーブル内のデータの値を全角から半角に、逆に半角から全角に変換して取得したい場合もあるでしょう。

全角・半角に変換する用の関数はあるのか気になりますよね。

そこでこの記事では、SQLで全角と半角を変換する方法について解説します。

MySQLで全角・半角変換をする場合

MySQLの場合、残念ながら全角・半角を変換する関数というのは用意されていません

もし、全角・半角の変換を行いたい場合は「REPLACE関数」を使うのが簡単でしょう。

REPLACE関数は、文字列の一部を置換できる関数です。

REPLACE関数を使うには、次のように記述しましょう。

SELECT REPLACE('対象の文字列', '置換前の文字列', '置換後の文字列' );

REPLACE関数の第一引数には、置換を行う対象の文字列を記述します。

第二引数に、置換前の文字列を記述し、第三引数に置換後の文字列を指定しましょう。

また、第三引数の文字列を省略すると、置換前の文字列が削除されます。

特定の文字を削除したい場合に便利です。

 

では、実際にREPLACE関数を使って、全角・半角の変換を行ってみます。

次のように記述しましょう。

SELECT REPLACE('potepan', 'pote', 'pote' );

上記のSQL文は、「potepan」という文字列の「pote」だけ全角に変換しています。

実行すると結果は次のようになりました。

mysql> SELECT REPLACE('potepan', 'pote', 'pote' );
+---------------------------------------------+
| REPLACE('potepan', 'pote', 'pote' ) |
+---------------------------------------------+
| potepan |
+---------------------------------------------+
1 row in set (0.00 sec)

期待通りの文字列が全角に変換されています。

 

逆に、全角文字を半角にすることも可能です。

mysql> SELECT REPLACE('potepan', 'pote', 'pote' );
+-----------------------------------------------------------+
| REPLACE('potepan', 'pote', 'pote' ) |
+-----------------------------------------------------------+
| potepan |
+-----------------------------------------------------------+
1 row in set (0.00 sec)

 

また、カタカナの全角・半角変換もできます。

mysql> SELECT REPLACE('ポテパンスタイル', 'ポテパン', 'ポテパン' ) change_name;
+--------------------------+
| change_name |
+--------------------------+
| ポテパンスタイル |
+--------------------------+
1 row in set (0.00 sec)

それぞれ期待した動作になっていますね。

REPLACE関数の使い方については、他記事でも解説していますので参考にしてみてください!

【関連記事】

▶︎【MySQL】作業効率を高める!MySQLクエリの良い所取り「REPLACE」についての解説

▶︎SQLで文字列の置換をするにはreplace関数使用。 複数置換をするサンプルコード

Oracleで全角・半角変換をする場合

Oracleで全角・半角変換をする場合には、「TO_MULTI_BYTE関数」「TO_SINGLE_BYTE関数」が使えます。

半角から全角に変換する場合はTO_MULTI_BYTE関数を、全角から半角に変換する場合はTO_SINGLE_BYTE関数を使いましょう。

ただし、半角・全角カタカナの変換とAL16UTF16 などのマルチバイトのアスキーコードは変換されません

それぞれ、次のように記述します。

SELECT TO_MULTI_BYTE('potepan') FROM DUAL;

SELECT TO_SINGLE_BYTE('potepan') FROM DUAL;

執筆者がOracleを使用していないため、実行結果はカットします。

PostgreSQLで全角・半角変換をする場合

PostgreSQLで全角・半角変換をする場合は、MySQL同様にREPLACE関数を使って変換可能です。

また、PostgreSQLでは「TRANSLATE関数」も使えます。

TRANSLATE関数は、文字列を別の文字列に置換する関数です。

次のように記述できます。

SELECT TRANSLATE('対象の文字列', '置換対象の文字列', '置換後の文字列' );

REPLACE関数との違いは、完全一致の要否です。

REPLACE関数は、第二引数に指定した文字列を単語単位で検索します。

そのため、第一引数(対象の文字列)の中に、完全一致する文字列がない場合は置換が行われません。

一方で、TRANSLATE関数は、第二引数の文字列の先頭から1文字ずつ検索し、位置が対応している第三引数へ置換が行われます。

つまり、置換したい文字が第一引数の中に含まれていれば、単語単位でなくても一度に置換可能なのです。

TRANSLATE関数の方が使い勝手が良いとも言えます。

 

では、それぞれの動作の違いも確認しつつ、全角・半角の変換を行ってみましょう。

次のように記述すると、半角から全角へ変換できるはずです。

SELECT TRANSLATE('potepan', 'aenopt', 'aenopt' );

translate
-----------
potepan
(1 row)

対象の文字列は「potepan」となっており、第二引数は「aenopt」と半角英字を並べています。

この英字の並びに合わせて、第三引数には全角の「aenopt」を指定しました。

これによって、「a」は「a」に、「e」は「e」に置換される、といった処理になるのです。

第二引数と第三引数を入れ替えれば、全角から半角への変換もできます。

このTRANSLATE関数と同じ指定を、REPLACE関数ではできません。

よって、TRANSLATE関数の方が使い勝手が良いと言えるのです。

ポテパンダの一言メモ

極端な話、第二引数と第三引数に「a〜z」の全角・半角など、すべての文字を指定すればどんな単語でも変換可能になります。

その他よく使われる変換について

ここでは、各DBMSごとに全角・半角を変換する方法を紹介しました。

SQLを扱う際には、全角・半角以外にもさまざまな「変換」を行うことがあります

例えば、現在格納している文字列を変換してアップデートや、「データ型」の変換もその一つです。

テーブルに格納したデータは「ただ格納して終わり」ということは少なく、何かしらの加工や変換処理を施す機会も多いと言えます。

そのため、ここで紹介した全角・半角の変換以外の変換方法も、SQLを扱う上で知っておくと良いでしょう。

ポテパンダの一言メモ

当サイトでは、SQLに関する豊富な情報を発信しています。

変換に関する記事も執筆していますので、この機会によければ参考にしてみてください!

【関連記事】

▶︎SQLでデータ型を変換する方法とは!?CAST/CONVERT関数の使い方

▶︎TO_CHAR関数の使い方を解説!SQLで数値や日付を書式を指定して文字列に変換

▶︎SQLで文字列と数値を変換する 数値をゼロ詰めフォーマットする方法

SQLで全角・半角を変換する方法まとめ

SQLで全角から半角、半角から全角に変換する方法を紹介しました。

MySQLで変換する場合は、REPLACE関数 を使いましょう。

PostgreSQLであれば、REPLACE関数 に加えて TRANSLATE関数 も使用可能です。

TRANSLATE関数は、単語単位ではなく1文字ずつ変換を指定できるので、積極的に使うべき関数と言えます!

Oracleの場合は、TO_MULTI_BYTE関数 と TO_SINGLE_BYTE関数 が用意されていますので、こちらを使いましょう。

全角・半角以外の変換についても、合わせて理解を深めてみてくださいね。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。