オーロラさんの勉強帳

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

【SQL】LENGTH関数の使い方 (ORACLE DATABASE 12C SQL基礎)

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


目次

LENGTH関数の使い方

LENGTH関数は引数で指定した文字データの文字数を返します。
空白(スペース)やハイフンも1文字としてカウントします。
全角・半角の区別はなく、1文字は1文字としてカウントします。
文字データがCHAR型(VARCHAR2型)の場合は、自動補完されるスペースも文字数としてカウントします。

LENGTH関数の書式

LENGTH(文字データ)

LENGTH関数の使用例

--文字データの文字数をカウントする
SELECT LENGTH('ORACLE DATABASE  ') FROM DUAL;
SELECT LENGTH('ORACLE') FROM DUAL;
SELECT LENGTH('オラクル oracle') FROM DUAL;


上記3つのSQLを実行してみます。
f:id:auroralights:20210424221618p:plain

1つめのSQLは空白(スペース)も含めて「17」と返ってきています。
2つめのSQLは全角文字も1文字として「6」と返ってきています。
3つめのSQLは日本語、全角スペース、半角文字のすべてを1文字は1文字として扱い「11」と返ってきています。

【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(値,エラーの場合の値)


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