元エンジニアPMのプロダクトマネージャーお役立ち情報

スタートアップから大規模プロダクトまで担当している元エンジニアの筆者が、事業開発・プロダクトマネジメントに役立つ情報を発信します

【SQL】LENGTH関数を使って、文字列の文字数を条件にデータを抽出する方法

SQLのLENGTH関数は、文字列の長さを取得するための非常に便利な関数です。このブログ記事では、具体的なテーブルを作成し、実際のクエリを例にとりながらLENGTH関数の使い方を説明します。 例えばメールアドレスの文字数で条件を絞りたいときや、ユーザーアンケートで30文字以上に絞ってデータを抽出したいときなど様々なケースで使うことができます。

テーブルの作成

まず、今回この記事で例として使用するテーブルを作成します。このテーブルはusersとし、ユーザーの名前やメールアドレスなどの情報を含むものとします。

CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    email VARCHAR(100)
);  

次に、いくつかのサンプルデータを挿入します。

INSERT INTO users (id, name, email) VALUES
(1, 'Alice', 'alice@example.com'),
(2, 'Bob', 'bob@example.net'),
(3, 'Charlie', 'charlie.longlastname@example.org');

LENGTH関数の使い方

LENGTH関数を使って、名前やメールアドレスの長さを取得するクエリを見てみましょう。

名前の長さを取得する

まずは、ユーザーの名前の長さを取得するクエリです。

コードをコピーする
SELECT name, LENGTH(name) AS name_length
FROM users;

このクエリを実行すると、各ユーザーの名前とその名前の文字数が表示されます。

結果例 name name_length Alice 5 Bob 3 Charlie 7 メールアドレスの長さを取得する 次に、ユーザーのメールアドレスの長さを取得するクエリです。

SELECT email, LENGTH(email) AS email_length
FROM users;

このクエリを実行すると、各ユーザーのメールアドレスとその文字数が表示されます。

email email_length
alice@example.com 17
bob@example.net 15
charlie.longlastname@example.org 32

LENGTH関数を使った条件について

LENGTH関数では、条件句として使うこともできます。例えば先程の例では、長さが20文字以下に絞りたいときは where LENGTH(email) <= 20としてあげることで条件を満たすemaliを抽出することができます。このようにwhere句で範囲を絞ることで集計しやすくなります。

SELECT
CASE
WHEN LENGTH(email) < 10 THEN 'len_under10',
WHEN LENGTH(email) < 20 THEN 'len_under20',
WHEN LENGTH(email) < 30 THEN 'len_under30'
END AS email_length_bin,
COUNT(1) AS cnt
FROM 
users;

CASE文を使うことで、LENGTHの長さ別に数を数えたりと組み合わせ次第で様々な集計ができます。

SQLのLENGTH関数は、文字列の長さを取得するのに非常に便利なツールです。この関数を使うことで、データベース内の文字列データの分析や操作を効率的に行うことができます。この記事の例を参考にして、あなたのデータベースでもLENGTH関数を活用してみてください。  

最近良くSQLの入門書を聞かれるのでお答えすると、個人的にはSQLの入門はゼロからはじめるデータベース操作がおすすめです。プロダクトマネージャーやプロジェクトマネージャーの入門にももちろんですし、エンジニアを目指している方も参考になる情報が多いと思います。筆者がデータベース操作に携わる時に先輩のエンジニアからお勧めされた本で古いですが概念を理解しやすいですし、分かりやすく書かれていると思います。