SQLで文字列を大文字や小文字に変換する(LOWER、UPPER、INTICAP)

覚えるべきキーワード
・LOWER
・UPPER
・INTICAP

ORACLEでは、テーブルに格納されているデータの文字列を大文字や小文字に変更したい時に利用できる関数があります。それが、LOWER、UPPER、INTICAPです。例えばテーブルには名前が登録されている時にすべて大文字で登録されているとしましょう。でも、データ取得後に画面に表示する場合は、名前と苗字の頭文字だけ大文字にしたいケースがあります。これはアプリケーション側(JavaやPHP側)でも変換できますが、データ取得直後に変換してしまった方が余分な手間も減るので便利です。

LOWER

LOWERは文字すべてを小文字に変換します。文字数に上限はありません。

LOWER

SELECT LOWER(‘SYSTEM Engineer’) “JOB” FROM dual;

結果は以下のようになります。

JOB
system engineer

dualテーブルというのは、ORACLEデータベースにデフォルトで用意されているテーブルです。dualには、1列しか入っていません。SYSDATEやデータの変換(※まさに、LOWER(‘SYSTEM Engineer’)がそうです)などテーブルから取得しないデータを取得する時に指定します。なぜ、こんな面倒なことをするかと言うと、ORACLEのルールとして、SELECT文にはFROM句が必須だからです。SELECT文にはなんとかしてFROM句を使わないといけない。そのためにデータが入っていない、形だけのdualテーブルをルール上、記載します。

話をLOWERに戻します。
このSQLはSYSTEM Engineerをすべて小文字にしていますので、(列名はJOBに指定)
JOB列にsystem engineerが表示されています。

もちろん、テーブルの列から取得した文字列をすべて小文字にするSQLも実行できます。
このサンプルテーブル1を使ってテーブルの列から取得した文字列を小文字にします。

サンプルテーブル1

(テーブル名:employee、id:数値型、job:文字型)

id job
1 PROGRAMMER
2 TESTER
3 System ENGINEER

以下のSQLを実行します。

LOWER

SELECT LOWER(job) FROM employee;

id job
1 programmer
2 tester
3 system engineer

job列の値が小文字に変換されました。

UPPER

UPPERは文字すべてを大文字に変換します。文字数に上限はありません。

UPPER

SELECT UPPER(‘SYSTEM Engineer’) “JOB” FROM dual;

結果は以下のようになります。

JOB
SYSTEM ENGINEER

JOB列にSYSTEM ENGINEERが表示されています。もともとの文字列SYSTEM EngineerがSYSTEM ENGINEERに大文字変換されています。
LOWERで使ったサンプルテーブル1を使ってテーブルの列から取得した文字列を大文字にします。

UPPER

SELECT UPPER(job) FROM employee;

id job
1 PROGRAMMER
2 TESTER
3 SYSTEM ENGINEER

job列の値が大文字に変換されました。

INTICAP

最後はINTICAPです。INTICAPは、文字列の先頭を大文字、残りを小文字に変換します。文字数に上限はありません。
ENGINEERがEngineerになります。また、SYSTEM ENIGINEERはSystem Engineerになります。一つの文字列でも単語で区切ってあるとそれぞれの単語の先頭が大文字になります。区切るためにはスペース、ハイフン、スラッシュを挟みます。SYSTEM-ENIGINEERはSystem-Engineer、SYSTEM/ENIGINEERはSystem/Engineerになります。

INTICAP

SELECT INTICAP(‘SYSTEM Engineer’) “JOB” FROM dual;

結果は以下のようになります。

JOB
System Engineer

JOB列にSystem Engineerが表示されています。もともとの文字列SYSTEM EngineerがSystem Engineerに大文字変換されています。
LOWERで使ったサンプルテーブル1を使ってテーブルの列から取得した文字列の頭文字を大文字、残りを小文字にします。

INTICAP

SELECT INTICAP(job) FROM employee;

id job
1 Programmer
2 Tester
3 System Engineer

job列の値は頭文字が大文字、残りが小文字に変換されました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です