オーロラさんの勉強帳

SESのロースキル客先常駐勤務。データベース、Excel、Excel VBA、ネットワーク、LinuxなどIT関連のことを主に書いていきます。

【SQL】UPPER関数、LOWER関数、INITCAP関数の使い方 ~大文字・小文字変換~(ORACLE DATABASE 12C SQL基礎)

ORACLE DATABASE 12c SQL基礎(1Z0-061)の試験範囲でもある、
UPPER関数、LOWER関数、INITCAP関数の使用方法を紹介します。


目次

UPPER関数の使い方

UPPER関数は、引数に指定した文字データを大文字に変換する関数です。

UPPER関数の書式

UPPER(文字データ)

UPPER関数の使用例

--UPPER関数で文字列を大文字にする使用例
SELECT UPPER('Oracle 1z0-061学習') FROM DUAL;
SELECT UPPER('abcdefg') FROM DUAL;

上記のSQLを実行すると引数に指定した文字列を大文字に変換します。
f:id:auroralights:20210424174605p:plain
※実行結果

LOWER関数の使い方

LOWER関数は、引数に指定した文字データを小文字に変換する関数です。

LOWER関数の書式

LOWER(文字データ)

LOWER(文字列)の使用例

--LOWER関数で文字列を小文字に変換する
SELECT LOWER('Oracle 1Z0-061学習') FROM DUAL;
SELECT LOWER('ABCDEFG') FROM DUAL;

上記のSQLを実行すると引数に指定した文字列を小文字に変換します。
f:id:auroralights:20210424174705p:plain
※実行結果

INITCAP関数の使い方

INITCAP関数は、引数に指定した各単語の先頭1文字を大文字に変換し、それ以外の文字(各単語の2文字目以降の文字)を小文字に変換します。
スペースや-(ハイフン)などの記号で区切られた文字を1つの単語とみなされることに注意が必要です。

INITCAP関数の書式

INITCAP(文字データ)

INITCAP(文字列)の使用例

--INITCAP関数で各単語の先頭文字を大文字に、2文字目以降を小文字に変換する
SELECT INITCAP('oracle database SQL') FROM DUAL;
SELECT INITCAP('I''m fine.') FROM DUAL;


上記のSQLを実行すると
f:id:auroralights:20210424174811p:plain


1つ目のSQLでは「Oracle Database Sql」とスペースで区切られた各単語の先頭1文字を大文字、2文字目以降を小文字にして返します。


2つ目のSQLでは「I'M Fine.」と記号「'」とスペースで区切られた単語の先頭1文字を大文字、2文字目以降を小文字で返します。
「'」などの記号でも単語として区切られることに注意が必要です。

【Excel】括弧内の文字列を抽出する方法 ~()、【】、<>などのカッコに囲まれた文字を調べる~

MID関数とFIND関数を使って、【】、()、<>などの括弧に囲まれている文字列を抽出する方法を紹介します。


目次

カッコ内の文字列の抽出方法

以下の関数を使うことでカッコに囲まれた文字列を抽出することができます。

【カッコ内の文字列を抽出する関数】
=MID(対象セル,FIND("【",対象セル)+1,FIND("】",対象セル)-FIND("【",対象セル)-1)

※同じ種類のカッコが複数ある場合は、正しい結果を得られないことがあります。
例:【Excel【関数】【学習】】のような文字列では、意図した部分を抜き取れません。

※上記の【、】の部分を書き換えることで()、「」、<>などのカッコに囲まれた文字を抽出することができます。
()内の文字列を抽出する例:=MID(B3,FIND("(",B3)+1,FIND(")",B3)-FIND("(",B3)-1)


以下の例では、【】に囲まれた文字をC3セルに抽出しています。
f:id:auroralights:20210425115944p:plain


上記の関数では対象のカッコがない場合は「#VALUE!」エラーになるので、以下のように対象のカッコ内場合は
IFERROR関数で「対象なし」と返すようにするといいと思います。

【カッコ内の文字列を抽出する関数】IFERROR追加
=IFERROR(MID(B3,FIND("【",B3)+1,FIND("】",B3)-FIND("【",B3)-1),"対象なし")


以下の例では、【】がある場合は【】に囲まれた文字を抽出し、【】がない場合は「対象なし」と返すようにしています。
f:id:auroralights:20210425121706p:plain


関数の仕組みを考えよう

以下のカッコ内の文字列を抽出する関数がどのようになっているか考えてみましょう。
=IFERROR(MID(B3,FIND("【",B3)+1,FIND("】",B3)-FIND("【",B3)-1),"対象なし")

MID関数とFIND関数の部分の考え方

まずは以下のMID関数とFIND関数の部分を見ていきます。
MID(B3,FIND("【",B3)+1,FIND("】",B3)-FIND("【",B3)-1)


MID関数は以下のように対象文字列の開始位置から指定した文字数分の文字を抽出する関数です。
MID(文字列,開始位置,文字数)

FIND関数は以下のように対象に対して、検索文字列が何文字目にあるか返す関数です。
FIND(検索文字列,対象)



MID関数は以下のように考えます。
f:id:auroralights:20210425123514p:plain

対象の「セルB3」に対して、開始位置「FIND("【",B3)+1」、文字数「FIND("】",B3)-FIND("【",B3)-1」を指定しています。


次に開始位置のFIND関数を考えます。
f:id:auroralights:20210425124149p:plain

FIND関数で対象「セルB3」の中で先頭から「【」までの文字数を返しています。
プラス1しているのは、抽出したい文字列は【の次の文字から抜き出したいからです。


次に文字数のFIND関数を考えます。
f:id:auroralights:20210425124828p:plain

2つのFIND関数と「-1」があります。
最初のFIND関数では対象「セルB3」の「】」がある位置の文字数を返しています。
2つ目のFIND関数では対象「セルB3」の「【」がある位置の文字数を返しています。

最初のFIND関数の結果から2つ目のFIND関数の結果を引いて、さらにマイナス1としています。
これは【】内の文字を抽出するためです。
以下の画像を見るとわかりやすいですが、3文字目の【、7文字目の】に囲まれている3文字を抜き出したいので
マイナス1をする必要があります。
f:id:auroralights:20210425125331p:plain


最後にIFERROR関数でエラーの時の処理を付け加えています。
IFERROR(値,エラーの場合の値)


関数の組み合わせも一つずつ考えていけば大したことありません。
以上がカッコ内の文字を抽出する方法でした。

【SQL】TRIM関数とオプション「LEADING、TRAILING、BOTH」の使い方 (ORACLE DATABASE 12C SQL基礎)

ORACLE DATABASE 12c SQL基礎(1Z0-061)の試験範囲でもある、
TRIM関数BOTH、LEADING、TRAILINGのオプションを指定した場合の使用方法を紹介します。


目次

TRIM関数の使い方

TRIM関数は引数で指定した文字の前後にある半角スペースを削除する関数です。
また、オプション・引数を指定することで1文字の切り捨て文字を文字列の「前後」または「先頭1文字」または「末尾1文字」から削除することができます。

TRIM関数の書式

  1. TRIM(文字列)
  2. TRIM(切り捨て文字 from 文字列)
  3. TRIM(LEADING | TRAILING | BOTH] 切り捨て文字 FROM 文字列)

※指定できる切り捨て文字は1文字だけです。2文字以上を指定するとエラーとなります。
※LEADINGは先、TRAILINGは末尾、BOTHは両方という意味を意識すると覚えやすいです。

1.TRIM(文字列)の使用方法

「TRIM(文字列)」は文字列の前後の半角スペースを削除します。
ダミーテーブルのDUALを使って以下のSQLで動作を確認してみましょう。

--文字列の前後の半角スペースを削除する例
SELECT TRIM('   ORACLE 1Z0-061学習   ') FROM DUAL;

--文字列の前後の全角スペースは削除されない例
SELECT TRIM('   ORACLE 1Z0-061学習   ') FROM DUAL;


文字列の前後の半角スペースは削除されますが、全角スペースは削除されません。


2.TRIM(切り捨て文字 from 文字列)の使用方法

「TRIM(切り捨て文字 from 文字列)」は指定した切り捨て文字(1文字)が文字列の前後にある場合に、その1文字を削除します。
※指定できる切り捨て文字は1文字だけです。

--文字列の前後の「a」を削除する例
SELECT TRIM('a' FROM 'a1101a') FROM DUAL;
SELECT TRIM('a' FROM 'a5555') FROM DUAL;
SELECT TRIM('a' FROM '5555a') FROM DUAL;

1つ目のSQLでは文字列の前後に「a」があるので、前後の「a」を削除。
2つ目のSQLでは文字列の先頭にある「a」を削除。
3つ目のSQLでは文字列の末尾にある「a」を削除。


切り捨て文字に2文字以上を指定した場合は、以下のようなエラーとなります。

SQL   : ORA-30001: 切捨てセットの文字は1つにする必要があります

※エラーコード:ORA-30001の例

2.TRIM(LEADING | TRAILING | BOTH] 切り捨て文字 FROM 文字列)の使用方法

オプションのLEADING | TRAILING | BOTHを指定することで、文字列の先頭、もしくは末尾、もしくは前後両方から切り捨て文字を削除することができます。

  • LEADINGを指定した場合は、文字列の先頭から切り捨て文字を削除します。
  • TRAILINGを指定した場合は、文字列の末尾から切り捨て文字を削除します。
  • BOTHを指定した場合は、文字列の前後から切り捨て文字を削除します。


LEADINGの使用例

--文字列の先頭の「a」を削除する例
SELECT TRIM(LEADING 'a' FROM 'a1101a') FROM DUAL;


TRAILINGの使用例

--文字列の末尾の「a」を削除する例
SELECT TRIM(TRAILING 'a' FROM 'a1101a') FROM DUAL;


BOTHの使用例

--文字列の前後の「a」を削除する例
SELECT TRIM(BOTH 'a' FROM 'a1101a') FROM DUAL;