その関数で何ができるかを把握しておこう
関数は出題率が高いと冒頭の要約文でお教えしましたが、それは「関数」カテゴリ以外だけでなく、「副問合せ」や「結合」といった他のカテゴリの問題でも、選択肢の中で関数が使われていることが多い、という事実も含んでいます。副問合せは理解できていたのに、選択肢内の関数が分からなかったり取り違えたりして失点するなんて場合もあります。そんな悔しい思いを皆さんがしないために、本連載では関数を説明していきます。
まずは小手調べの例題から。
問1
Oracle Databaseに組み込まれているSQL関数を使用して、実行できるものはどれですか?
- a. 文字列の先頭、末尾または途中の文字を除去する
- b. 指定した位置から指定した文字数分の文字を、指定した文字列に置き換える
- c. 指定した文字列の位置を返す
- d. 3つ以上の列または式を組み合わせて、出力で1つの列にする
- e. 指定した位置から末尾までの文字数を返す
- f. 先頭英字を英大文字に変換する
正解は、選択肢c、fです。
この例題の選択肢は、いずれも文字列関数を想定しています。12c SQL基礎試験で出題される主な文字列関数は表1のとおりです。
関数 | 説明 |
---|---|
CONCAT(文字列1,文字列2) | 2つの列または式を組み合わせて、出力で1つの列にする |
INITCAP(対象文字列) | 先頭英字を英大文字に変換する |
LOWER(対象文字列) | 英大文字を英小文字に変換する |
UPPER(対象文字列) | 英小文字を英大文字に変換する |
SUBSTR(対象文字列, 検索開始位置, 抜き出す文字数) | 指定した位置から指定した文字数分の文字を返す |
INSTR(対象文字列, 検索文字列, 検索開始位置, 出現順番) | 指定した文字列の位置を返す |
TRIM([LEADING|TRAILING|BOTH], 指定文字, 対象文字列) | 文字列の先頭、末尾の文字を除去する |
REPLACE(対象文字列, 検索文字列, 置換文字列) | テキスト内の文字列を指定した文字列に置き換える |
LENGTH(対象文字列) | 文字数を返す |
LPAD(対象文字列, 埋め込み後桁数, 埋め込み文字) | 指定した文字を左に埋めて、指定した桁数にして返す |
RPAD(対象文字列, 埋め込み後桁数, 埋め込み文字) | 指定した文字を右に埋めて、指定した桁数にして返す |
選択肢aは、TRIM
関数の説明です。TRIM
関数は文字列の先頭、末尾(あるいはその両方)の文字を除去しますが、途中の文字を除去することはできません。
選択肢bは、REPLACE
関数の説明です。REPLACE
関数は文字列を指定した文字列に置き換えることはできますが、指定した位置から指定した文字数分を置き換えることはできません。
選択肢cが正解です。選択肢cはINSTR
関数の説明です。
選択肢dは、CONCAT
関数の説明です。CONCAT
関数は、3つ以上の文字列を組み合わせることはできません。連結演算子「||
」を使えば、3つ以上を組み合わせることができますが、「||
」は演算子であって、関数ではありません。
選択肢eは、LENGTH
関数の説明です。LENGTH
関数は、文字数を数え始める位置を指定することはできません。
選択肢fは、INITCAP
関数の説明です。INITCAP
関数は先頭だけでなく、空白や記号(マイナスやピリオドなど)の直後の英文字も英大文字に変換されます。この点は要確認です。
なお、INSTR
関数は、SUBSTR
関数と混ぜて覚えてしまう人が多いようです。正解できた人も注意してください。
では次ページから、実践問題に移りましょう!
SQL関数を覚えておくことは実務に役立つの?
覚えておいて損はありませんが、丸覚えしておく必要はないと思います。必要になったときに調べればよいからです。
ただし、「処理をSQLに頼るべきか否か」の判断を求められるケースでは、「SQLのほうが処理が簡単か」が1つの基準になるでしょう。これを見極めるためには、SQLで提供されている関数で何ができるかを把握しておく必要があります。