【SQL超入門講座】16.LENGTH関数|文字数を条件にしてデータを抽出する方法

こんにちはKinocodeです。
SQL入門口座の16回目です。
これまでのレッスンでは、ある特定の文字を含むレコードや、ある数値より大きいレコードなどの条件で抽出してきました。
このレッスンから、条件に関数を使う抽出の仕方について学習します。
SQLではエクセルなどと同様に関数を使用することができます。
関数を使用することで、目的の計算や処理を簡単かつ正確に行うことができます。
関数には様々な種類がありますが、利用頻度の高いものから使い方を覚えていきましょう。

今回学習するLENGTH関数は文字数を取得する関数です。
LENGTH関数を使うことで、カラムの各値の文字数を把握することができます。
そして指定した文字数以上のレコードだけを抽出するといったことができるようになります。
基本的な関数ですので、しっかり使い方をマスターしましょう。
キノコードでは、SQLのレッスンの他にも、仕事の自動化のレッスン、データ分析にかかせないPandas入門講座、初心者からはじめる人工知能開発のレッスンなどの動画を配信しております。
また、今後は、このようなレッスン動画を予定しております。
チャンネル登録がまだの方は、新着通知がいきますのでぜひ登録をお願いします。

この記事の信頼性

この記事は、Youtubeにて日本最大級のプログラミング教育のチャンネルを運営しているキノコードが執筆、監修しています。
私自身は、2012年からプログラミング学習を始め、2019年以降はプログラミング教育に携わってきた専門家です。
他にも、私には下記のような実績や専門性があります。

  • キノコードは毎月10名以上、合計100名以上ののプログラミング学習者と1対1でお悩みを聞き、アドバイスをしています
  • キノコード自身は、プログラミングスクールに通ったり、本や有料åの動画で勉強してきた経験もあります
  • キノコードは、プログラミング学習サービス「キノクエスト」を運営しています
  • 本の出版、プログラミング雑誌への寄稿の実績があります

プログラミング学習サービス「キノクエスト」のご紹介

キノコードでは、プログラミングを習得するためのプログラミング学習サービス「キノクエスト」を運営しています。
Pythonの問題の他に、SQLの問題も120問以上あります。
キノクエストには、学習カリキュラムがあり、学習順番に悩むことなく学習を進められます。
月額1,990円と本1冊分の値段です。

キノクエストの特徴は下記の通りです。

  • SQLの問題も120問以上
  • プログラミング学習をしている仲間が集まるコミュニティがある
  • 1000問以上の問題を解いてプログラミングを習得
  • 環境構築不要ですぐに始められる
  • 動画と連動しているので、インプットもできる。
  • 月額1,990円で、コミュニティもセット

キノクエストを詳しく知りたい方は、紹介ページをご覧ください。

▼キノクエストの紹介ページはこちら▼
https://kino-code.com/kq_service_a/

それでは、レッスンスタートです。

LENGTH関数とは

LENGTH関数はLENGTH(文字列)の形で使用し、引数に指定した文字列の文字数を取得することができます。  
引数のデータ型がBLOB型の場合はバイト数を取得します。
BLOB型はバイナリデータの格納に使用されるデータ型で、BLOBとはBinary Large OBjectを意味します。
ちなみに、BLOB型の例は、画像や音声などのマルチメディアオブジェクトをバイナリデータに変換したものです。

なお、引数が文字列やBLOB型でない場合は、一度文字列に変換したうえで文字数を取得します。
また、引数がNULLの場合は、NULLが返ってきます。

さらに引数にはカラムを指定することができます。
次のようにSELECT文を書くと、指定したカラムに含まれる各値の文字数を取得することができます。

SELECT LENGTH(カラム) FROM テーブル

LENGTH関数の使い方

ここからはデモテーブルを使って、LENGTH関数の使い方を実際に確認してみましょう。

今回はデモテーブルとしてtest_tableを作成します。
test_tableは注文データが入ったテーブルで、商品名というTEXT型のカラムをがあります。

index 売上日 社員ID 商品分類 商品名 単価 数量 売上金額
1 2020/1/4 a023 ボトムス ロングパンツ 7000 8 56000
2 2020/1/5 a003 ボトムス ジーンズ 6000 10 60000
3 2020/1/5 a052 アウター ジャケット 10000 7 70000

それではこのテーブルから商品名を抽出し、その隣に商品名の文字数を表示してみましょう。
SQLはこのように書くことができます。

SELECT 商品名, LENGTH(商品名) 文字数 FROM test_table

SELECT句で商品名のカラムと、LENGTH関数を書き、引数に商品名のカラムを指定します。
このLENGTH関数は、それぞれの商品名の文字数を返します。
この文字数を格納する新しいカラムは、そのまま「文字数」としました。

それではSQLを実行します。

商品名 文字数
ロングパンツ 6
ジーンズ 4

商品名とその文字数を表示するカラムを正しく抽出することができました。

次にLENGTH関数をWHERE句で使用してみましょう。
LENGTH関数をWHERE句で使用することで、文字数を条件にしてカラムを抽出することができます。

商品名が5文字以上のレコードだけを抽出してみましょう。

SQLはこのように書くことができます。

SELECT 商品名, LENGTH(商品名) 文字数 FROM test_table
WHERE LENGTH(商品名) >= 5 

WHERE句に、LENGTH関数を書き、引数は商品名のカラムを指定します。続けて>=5と書きます。
先ほど説明した通り、このLENGTH関数はカラムの各値の文字数を返しますので、これで商品名が5文字以上のレコードだけが抽出されることになります。

それではSQLの実行結果を確認してみましょう。

商品名 文字数
ロングパンツ 6
ジャケット 5

商品名が5文字以上のレコードだけを抽出することができました。

レッスンは以上です。
キノコードでは、わかりやすさのほかに、みやすく飽きない動画づくりを意識しております。
これからもたくさんの動画を配信する予定ですので、ぜひチャンネル登録をお願いします。
SQL16LENGTH.md