MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで指定した文字数未満のレコードを抽出する方法

MySQLで文字数がX文字未満のレコードを取得するには?

MySQLでは、CHAR_LENGTH()関数をWHERE句と組み合わせることで、指定した文字数より少ないレコードを簡単に抽出できます。CHAR_LENGTH()は文字列の「文字数」を返す関数で、マルチバイト文字(日本語など)も1文字として正しくカウントできるのが特徴です。

実際の手順をサンプルを使って見ていきましょう。

1. テーブルを作成する

まず、サンプル用のテーブルを作成します。

mysql> create table DemoTable
-> (
-> FullName varchar(50)
-> );
Query OK, 0 rows affected (1.75 sec)

2. レコードを挿入する

INSERTコマンドを使って、いくつかのレコードを登録します。

mysql> insert into DemoTable values('Chris Brown');
Query OK, 1 row affected (0.40 sec)
mysql> insert into DemoTable values('David Miller');
Query OK, 1 row affected (0.91 sec)
mysql> insert into DemoTable values('Robert Miller');
Query OK, 1 row affected (0.26 sec)
mysql> insert into DemoTable values('John Smith');
Query OK, 1 row affected (0.89 sec)

3. 登録されたレコードを確認する

SELECT文ですべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

実行結果は以下の通りです。

+---------------+
| FullName |
+---------------+
| Chris Brown |
| David Miller |
| Robert Miller |
| John Smith |
+---------------+
4 rows in set (0.00 sec)

4. 文字数が12文字未満のレコードを抽出する

ここで本題です。CHAR_LENGTH()を使って、氏名が12文字未満のレコードだけを取得するクエリは次のようになります。

mysql> select *from DemoTable where char_length(FullName) < 12;

実行すると、以下の出力が得られます。

+-------------+
| FullName |
+-------------+
| Chris Brown |
| John Smith |
+-------------+
2 rows in set (0.00 sec)

「Chris Brown」(11文字)と「John Smith」(10文字)のみが抽出されました。「David Miller」と「Robert Miller」はそれぞれ12文字のため、条件から除外されています。

CHAR_LENGTH()とLENGTH()の違いに注意

MySQLには似た関数としてLENGTH()がありますが、こちらは文字数ではなくバイト数を返します。UTF-8環境では日本語などのマルチバイト文字が1文字あたり複数バイトになるため、「文字数」で絞り込みたい場合は必ずCHAR_LENGTH()を使用しましょう。

  1. MySQLクエリで「〜より大きくない」条件を記述する方法

    MySQLで「〜より大きくない」を表すには?MySQLのクエリにおいて「〜より大きくない(not greater than)」という条件は、比較演算子の「〜以下(<=)」を使うことで簡単に表現できます。基本の構文は次のとおりです。select * from テーブル名 where カラム名<=値;サンプルテーブルを作成するまず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable1480 -> ( -> StudentName varchar(40), -> StudentMarks int

  2. MySQLでSELECTとSHOWコマンドの結果を1つに結合する方法

    はじめにMySQLでは、SELECT文やSHOWコマンドの実行結果を、ユーザー定義変数(セッション変数)を活用することで1つの結果セットにまとめることができます。この記事では、その具体的な方法をサンプルコード付きで解説します。基本的な構文複数のコマンド結果を1つに結合するには、以下のようなクエリを使用します。各変数に別名(エイリアス)を付けて出力するのがポイントです。select @任意の変数名1 as 別名1, @任意の変数名2 as 別名2, ......N;手順1:最初の変数を作成・初期化するまず、結合したい値を格納するための最初の変数を作成し、初期化します。mysql> set