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

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

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

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

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商品分類商品名単価数量売上金額
12020/1/4a023ボトムスロングパンツ7000856000
22020/1/5a003ボトムスジーンズ60001060000
32020/1/5a052アウタージャケット10000770000

それではこのテーブルから商品名を抽出し、その隣に商品名の文字数を表示してみましょう。
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文字以上のレコードだけを抽出することができました。

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