この記事は「データベーススペシャリスト資格に興味はあるが、どのようなものか?どう学ぶのか?」という方向けに、具体的な内容と私自身の挑戦ログをお伝えする。学び中の方や、これから学ぼうとされる方の参考になれば幸いだ。
今回は「関数の確認ドリル」について書く。
※注意点として、SQLはDBMSによって作法が異なる。この記事はGoogle Big Queryに準拠するものであることをお含みおき願いたい。
問題025(SQL 関数の確認ドリル)
問題文
- 「customers」テーブルの「name」フィールドには、氏名が半角スペース区切りで格納されています。
- 姓が「○川」(川の前に1文字存在し、「川」で終わる)、
- 名が「○○子」(子の前に2文字存在し、「子」で終わる)に該当する
- 女性について、フルネーム(name)、姓名の名(first_name)の2カラムを取得してください。
- 正規表現を使わなくても記述できますが、できれば正規表現にチャレンジしてください。
likeのおさらい
- likeの引数は「%が任意の数の任意の文字、_が1つの任意の文字、バックスラッシュがエスケープ処理」
- これで問題を解く場合、「”_川 %”」(任意1文字+川+半角スペース+任意複数文字)かつ「”% __子”」(任意文字+半角スペース+任意2文字+子)となる。
- 絞り込み条件に女性(gender=2)を加え、姓名の名を取得(substr関数)する。結果は以下のとおり(姓名のうち名を取得する場合、instr関数を組み合わせる)
正規表現のおさらい
- 正規表現はより柔軟な指定を行い、文字や数字を確認・抽出できる。
- 文字列に関する正規表現については過去記事参照。
- まず、「^」(次の文字で始まる)~「$」(直前の文字で終わる)で囲む形にする。
- 次に、「.」(任意の1文字)と「\s」(半角スペース)を組み合わせ条件を作る。
- 最後に「()」で括り、取得部分を指定する。具体的には以下のとおり。
考察
- SQLについて。基本的なSQL関数について学習完了した。今回は「関数についての確認ドリル」を解いた。(曖昧な条件での文字列抽出、サブクエリ)
- 考察。1日最低1問はSQLに触れていると、自然に扱えるようになってきた実感がある。言語と同様に”慣れ”てきたこともあるだろうが、自分で構文を組み立ててすぐ反応が返ってくる”フィードバックの速さ”が楽しいこともある。これからもぜひ続けていきたい。
考察のシンプル化と英訳(練習中)
- I can use SQL naturally. because I solve at least one SQL problem in a day.
- (SQLを自然に使えるようになってきた。なぜなら、私は1日に最低1問はSQLの問題を解くからだ)
参考書籍(該当箇所)
- 集中演習 SQL入門/木田和廣/株式会社インプレス(SQL確認ドリル)
コメント