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

SQLに限らず、プログラムでは、文字の一部を切り出して利用することはよくあります。その際、右端から何文字、または、左端から何文字を利用したい、といった用途に便利な関数が、RIGHTとLEFTです。そして、この関数はは、データベース管理ソフトにもよりますがSQLでも利用できます。今回は、RIGHT関数とLEFT関数を中心に、SQLで使える文字を切り出す関数について解説します。

SQLの文字の一部を切り出す関数

Excelの関数に詳しい方なら、文字列の左側の何文字かを切り出すLEFT関数と、右側の何文字かを切り出すRIGHT関数をご存じでしょう。どちらもセルの中の文字を簡単に加工するのに便利な関数です。プログラムやデータベースを利用するほどではない単純なリストの変換なら、Excelの表でこのような関数を使い、簡単に加工できます。

しかし、Webシステムの開発によく使われるプログラム言語では、LEFT関数とRIGHT関数は用意されていません。より高機能なsubtr関数などの文字列の一部を切り出す関数が使われます。Excelをあまり使わわない、という方にとっては、なじみのない関数かもしれません。

LEFT関数とRIGHT関数はRDBMSで使えない?

Excelでも使えるLEFT関数とRIGHT関数ですが、データベース管理ソフトによっては、使えるものと使えないものがあります。これは、文字列の操作に関しては、データベース管理ソフトによって独自の拡張が施されているからです。

なお、データベース管理ソフトの多くは、多くの独自機能を組み込んでいます。中には、文字列の切り出しにLEFT関数とRIGHT関数が組み込まれており、SQLから利用できるデータベース管理ソフトもあります。一方、プログラム言語のsubstr関数のように、より汎用的な文字列の一部を切り出す関数なら使える、といったソフトもあります。

このように、LEFT関数とRIGHT関数が使えるがデータベース管理ソフトがある一方、使えないソフトもあります。そのため、SQLを移植しようとするとエラーになることもあるので注意してください。

SQLの文字数の考え方

LEFT関数とRIGHT関数を使う場合、日本における半角文字と全角文字の扱いを意識してください。なお、今、広く使われているデータベース管理ソフトでは、日本語の文字コードをサポートしており、全角文字を1文字として扱えます。

しかし、厳密には、半角文字は1バイトで、全角文字は2バイトのため、データベース管理ソフトによっては、全角文字を2文字と数えるケースもあるので注意が必要です。もしSQLを移植する場合は、全角文字を1文字と数えるか、それとも2文字と数えるかをチェックしておきましょう。

LEFT関数とRIGHT関数の使い方

LEFT関数とRIGHT関数が使える代表的なデータベース管理ソフトは、MySQLとSQL Serverです。次から、この2つのデータベース管理ソフトの使い方について解説します。

LEFT関数とRIGHT関数の基本

LEFT関数とRIGHT関数は、2つの引数を取り、1つ目の引数が基の文字列で、2つ目の引数が文字数です。

LEFT関数
LEFT( 文字列, 文字数 )

LEFT関数の使用例
select LEFT( name, 4) as keyword from name_db;

この例では、name_dbテーブルのnameに格納された文字列の左側4文字を切り出し、keywordとして出力します。

RIGHT関数
RIGHT( 文字列, 文字数 )

RIGHT関数の使用例
select RIGHT( name, 4) as keyword from name_db;

先ほどと同じように、name_dbテーブルのnameに格納された文字列の右側4文字を切り出し、keywordとして出力する。

SQL Serverは文字数に変数を指定できる

LEFT関数とRIGHT関数が使えるのはMySQLとSQL Serverですが、文字数の使い方が違います。まず、MySQLでは、文字数に数字しか指定できません。これは、MySQLの古いバージョンから引き継がれており、MySQLのバージョン8やmariadbでも、指定できるのは数字のみです。

一方、マイクロソフト製のSQL ServerのLEFT関数とRIGHT関数では、文字数として、数字以外に変数、または列を指定できます。

OracleデータベースにはRIGHT関数が無い

Oracleデータベースは、エンタープライズ向けのデータベース管理ソフトとしては、標準とも言えるソフトです。しかし、それだけ影響力の大きなOracleデータベースでは、LEFT関数とRIGHT関数が使えません。そのため、MySQLなどで作成したLEFT関数やRIGHT関数を使ったSQLをそのまま実行してしまうと、エラーになるので注意してください。

文字の一部を切り出すならsubstr関数を

LEFT関数とRIGHT関数が使えないOracleデータベースには、文字の一部を切り出すsubstr関数が組み込まれています。ぜひ、この関数を使ってください。なお、使い方は次のとおりです。

substr( 文字列, 開始位置, 文字数 )

文字列の開始位置から、文字数分の文字を返します。

なお、このsubstr関数は、phpなどのプログラム言語で使われる文字の一部を切り出す関数と同じです。

substr関数の使用例

select substr(code, 1, 4 ) as "g-code" from table1;

この例は、table1というテーブルのcode列の左側4文字を切り出して表示するSQLです。

LEFT関数やRIGHT関数の置き換えのポイント

Oracleデータベースでは、LEFT関数とRIGHT関数が使えません。しかし、substr関数を使うことで、LEFT関数とRIGHT関数と同じ機能を実現できます。なお、LEFT関数は、文字列の左側から指定した文字数分を切り出す関数です。これは、substr関数で1文字目から指定した文字数を切り出すことで簡単に実現できます。

LEFT関数の置き換え例

LEFT( code, 3 ):文字列codeから、左側の3文字分を切り出す。

subtr( code, 1, 3 ):文字列codeの1文字目から3文字分を切り出す。

一方、RIGHT関数は文字の最後から指定した文字分を切り出すため、数字で指定するのは面倒だと思われるかもしれません。しかし、Oracleデータベースのsubstr関数は、開始位置にマイナスを指定すると、後ろから数えて、その文字数を切り出します。

RIGHT関数の置き換え例

RIGHT( code, 3 ):文字列codeから、右側の3文字分を切り出す。

substr( code, -3 ):文字列codeの後ろから3文字目以降を切り出す。

Webシステムなら文字の加工はプログラム側でも可能

Excelでは文字列を簡単に加工できるLEFT関数とRIGHT関数ですが、SQLではそれほど使う機会が無いかもしれません。特にWebシステムなど、データベースから抽出した文字列を加工するだけなら、プログラムで処理した方が簡単です。

しかし、幾つものサブクエリーで活用した複雑なSQLでリストを作り、それをWebシステムで活用するケースはよくあります。そのような、複雑なSQLを活用して、大規模なデータベースから効率よくデータを抽出し、をれを活用するようなシステムでは、そのサブクエリーで、ぜひ、SQLのLEFT関数やRIGHT関数のような文字列を加工する処理を活用してください。

まとめ

これまで解説したように、SQLにはプログラム言語のような文字列を加工する関数があり、リストを作る処理の中で使用できます。そして、このような文字を加工する関数には、Excelで使われるLEFT関数やRIGHT関数も含まれています。これらの関数をうまく活用すれば、SQLで複雑な処理を作ることも可能です。

ただし、全てのデータベース管理ソフトでLEFT関数やRIGHT関数が使えるとは限りません。そのため、他のソフトに移植する場合は、データベース管理ソフトに合わせて書き換えるようにしておきましょう。

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

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

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

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

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

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

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

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

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

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

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