Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

文字列の文字数をカウントする関数

SQLで「文字列の文字数を取得したい」と思ったときに、どの関数を使えばいいのかわからない人もいるのではないでしょうか?

文字数を調べて取得する関数は、DBMSごとに異なります。

ここでは、DBMSごとに文字数を取得する関数について解説します。

文字数の多い順にソートするといった、条件を指定して取得する方法も合わせて見ていきましょう。

LEN関数

LEN関数は、指定した文字列の文字数をカウントして返す関数です。

「Access」と「SQLServer」で使えます。使い方は次の通りです。

LEN('文字数を取得したい文字列');

サンプルコードで動きを確認してみます。

SELECT LEN('ポテパンスタイル');

■実行結果

8

DATALENGTH関数

DATALENGTH関数は、指定した文字列のバイト数を取得する関数です。

「SQLServer」で使えます。

DATALENGTH('文字数を取得したい文字列');

こちらもサンプルコードを確認してみましょう。

SELECT DATALENGTH('ポテパンスタイル');

■実行結果

24

このように、文字列のバイト数を取得できます!

LENGTH関数

「Oracle」「PostgreSQL」「MySQL」で文字数を取得したい場合は、LENGTH関数を使いましょう。

LENGTH関数は、文字列の長さをバイト単位で取得します。

LENGTH('文字数を取得したい文字列');

使い方は次の通りです。

SELECT LENGTH('ポテパンスタイル');

■実行結果

+------------------------------------+
| LENGTH('ポテパンスタイル')            |
+------------------------------------+
|                                 24 |
+------------------------------------+
1 row in set (0.03 sec)

CHAR_LENGTH関数 / CHARACTER_LENGTH関数

「MySQL」「PostgreSQL」で文字数を取得するには、CHAR_LENGTH関数 / CHARACTER_LENGTH関数が使えます。

2つは関数名が異なりますが、機能は同じです。

漢字やひらがな、カタカナなどのマルチバイト文字であっても、文字列の長さは1文字として認識されます。

CHAR_LENGTH('文字数を取得したい文字列');
CHARACTER_LENGTH('文字数を取得したい文字列');

サンプルコードで表示を確認してみましょう。

SELECT CHARACTER_LENGTH('ポテパンスタイル');

■実行結果

+-----------------------------------------+
| CHAR_LENGTH('ポテパンスタイル')            |
+-----------------------------------------+
|                                       8 |
+-----------------------------------------+
1 row in set (0.01 sec)

 

CHARACTER_LENGTH関数も確認してみます。

SELECT CHARACTER_LENGTH('ポテパンスタイル');

■実行結果

+----------------------------------------------+
| CHARACTER_LENGTH('ポテパンスタイル')            |
+----------------------------------------------+
|                                            8 |
+----------------------------------------------+
1 row in set (0.01 sec)

文字数を条件指定して取得する

ここでは、文字数のカウントに条件をつけて取得する方法を解説します。

特定の文字数のデータを取得する

テーブル内の特定の文字数でデータを取得したい場合は、文字数取得関数をWHERE句で指定します。

SELECT * FROM テーブル名 WHERE 文字数取得関数(カラム名) = 取得したい文字数;

サンプルで表示を確認してみましょう。

確認用に次のテーブルを用意しました。

mysql> SELECT * FROM items;
+-----------+
| item_name |
+-----------+
| pen       |
| eraser    |
| scissors  |
| pencil    |
| ruler     |
| compass   |
+-----------+
6 rows in set (0.00 sec)

ここでは、文字数が6文字のものを取得してみます。

mysql> SELECT * FROM items WHERE LENGTH(item_name) = 6;
+-----------+
| item_name |
+-----------+
| eraser    |
| pencil    |
+-----------+
2 rows in set (0.00 sec)

このように、6文字のitem_nameのデータが取得できました。

他の関数でも同様に取得可能です。

mysql> SELECT * FROM items WHERE CHAR_LENGTH(item_name) = 6;
+-----------+
| item_name |
+-----------+
| eraser    |
| pencil    |
+-----------+
2 rows in set (0.00 sec)

特定の文字数以上のデータを取得する

指定した文字数以上のデータを取得したい場合は、「=」を「>=」や「>」にすればOKです。

SELECT * FROM テーブル名 WHERE 文字数取得関数(カラム名) >= 取得したい文字数;

同じく「item_name」で6文字以上のデータを取得したい場合は、次のようになります。

mysql> SELECT * FROM items WHERE CHAR_LENGTH(item_name) >= 6;
+-----------+
| item_name |
+-----------+
| eraser    |
| scissors  |
| pencil    |
| compass   |
+-----------+
4 rows in set (0.00 sec)

「>=」を「>」にすると次の通りです。

mysql> SELECT * FROM items WHERE CHAR_LENGTH(item_name) > 6;
+-----------+
| item_name |
+-----------+
| scissors  |
| compass   |
+-----------+
2 rows in set (0.01 sec)

特定の文字数以下のデータを取得する

指定した文字数以下のデータを取得したい場合は、「=」を「<=」や「<」にすればOKです。

SELECT * FROM テーブル名 WHERE 文字数取得関数(カラム名) <= 取得したい文字数;

「item_name」で6文字以下のデータを取得したい場合は、次のようになります。

mysql> SELECT * FROM items WHERE CHAR_LENGTH(item_name) <= 6;
+-----------+
| item_name |
+-----------+
| pen       |
| eraser    |
| pencil    |
| ruler     |
+-----------+
4 rows in set (0.00 sec)

「<=」を「<」にすると次の通りです。

mysql> SELECT * FROM items WHERE LENGTH(item_name) < 6;
+-----------+
| item_name |
+-----------+
| pen       |
| ruler     |
+-----------+
2 rows in set (0.02 sec)

文字数の多い順、少ない順でソートする方法

文字数を多い順や少ない順でソートしたい場合は、「ORDER BY句」を使うことで実現可能です。

ソートする場合は、次のように記述します。

mysql> SELECT * FROM items ORDER BY 文字数取得関数(カラム名) DESC(ASC);

文字数が多い順でソートする際は「DESC」を、少ない順でソートする際は「ASC」を使いましょう。

サンプルで表示を確認してみます。

+-----------+
| item_name |
+-----------+
| scissors  |
| compass   |
| eraser    |
| pencil    |
| ruler     |
| pen       |
+-----------+
6 rows in set (0.01 sec)

文字数の多い順でソートされているのがわかります。

次に、文字数が少ない順でソートします。

mysql> SELECT * FROM items ORDER BY LENGTH(item_name) ASC;
+-----------+
| item_name |
+-----------+
| pen       |
| ruler     |
| eraser    |
| pencil    |
| compass   |
| scissors  |
+-----------+
6 rows in set (0.00 sec)

期待した動作になっていますね!

まとめ

SQLで文字数を取得する関数の使い方について解説しました。

文字数をただ取得するというよりは、条件を指定してソートするといった使われ方が主流です。

ぜひ、この記事を参考に文字数の指定方法をマスターしてください!

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。