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

MySQLクエリで「a」「b」「c」で始まるすべての名前を検索する方法

MySQLで「a」「b」「c」のいずれかの文字で始まる名前をすべて検索したい場合は、LIKE演算子OR演算子を組み合わせて使用します。

基本構文

SELECT * FROM yourTableName
WHERE yourColumnName LIKE 'A%'
   OR yourColumnName LIKE 'B%'
   OR yourColumnName LIKE 'C%';

このクエリは、指定したカラムの値が「a」または「b」または「c」で始まるレコードのみを抽出します。LIKE句における % は任意の文字列に一致するワイルドカードであり、「A%」と指定することで「Aで始まるすべての文字列」を意味します。

サンプルテーブルの作成

実際の動作を確認するために、まずテーブルを作成しましょう。以下のクエリを実行します。

mysql> create table AllNamesStartWithAorBorC
    -> (
    -> Id int NOT NULL AUTO_INCREMENT,
    -> EmployeeName varchar(20),
    -> PRIMARY KEY(Id)
    -> );
Query OK, 0 rows affected (0.70 sec)

テストデータの挿入

次に、INSERT文を使っていくつかのレコードを挿入します。

mysql> insert into AllNamesStartWithAorBorC(EmployeeName) values('Adam');
Query OK, 1 row affected (0.19 sec)
mysql> insert into AllNamesStartWithAorBorC(EmployeeName) values('Bob');
Query OK, 1 row affected (0.16 sec)
mysql> insert into AllNamesStartWithAorBorC(EmployeeName) values('baden');
Query OK, 1 row affected (0.48 sec)
mysql> insert into AllNamesStartWithAorBorC(EmployeeName) values('Carol');
Query OK, 1 row affected (0.41 sec)
mysql> insert into AllNamesStartWithAorBorC(EmployeeName) values('Mike');
Query OK, 1 row affected (0.13 sec)
mysql> insert into AllNamesStartWithAorBorC(EmployeeName) values('Larry');
Query OK, 1 row affected (0.16 sec)
mysql> insert into AllNamesStartWithAorBorC(EmployeeName) values('Chris');
Query OK, 1 row affected (0.18 sec)

登録データの確認

SELECT文ですべてのレコードを表示して、テーブルの中身を確認します。

mysql> select *from AllNamesStartWithAorBorC;

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

+----+--------------+
| Id | EmployeeName |
+----+--------------+
|  1 | Adam         |
|  2 | Bob          |
|  3 | baden        |
|  4 | Carol        |
|  5 | Mike         |
|  6 | Larry        |
|  7 | Chris        |
+----+--------------+
7 rows in set (0.00 sec)

a・b・cで始まる名前を検索するクエリ

それでは、「a」「b」「c」のいずれかで始まる名前を検索してみましょう。実行するクエリは以下の通りです。

mysql> select *from AllNamesStartWithAorBorC where EmployeeName like 'A%' or EmployeeName like 'B%' or
    -> EmployeeName like 'C%';

実行結果:

+----+--------------+
| Id | EmployeeName |
+----+--------------+
|  1 | Adam         |
|  2 | Bob          |
|  3 | baden        |
|  4 | Carol        |
|  7 | Chris        |
+----+--------------+
5 rows in set (0.00 sec)

補足:REGEXPを使った別の方法

条件が増える場合は、ORを繰り返す代わりにREGEXP(正規表現)を使うとコードがすっきりします。例えば次のように書けます。

mysql> select *from AllNamesStartWithAorBorC
    -> where EmployeeName regexp '^[abc]';

この正規表現 ^[abc] は、「a、b、cのいずれかの文字で先頭が始まる」ことを意味し、上記のLIKE+ORのクエリと同じ結果が得られます。条件が複雑になる場合や可読性を重視したい場合に有効な方法です。

なお、MySQLのデフォルトの照合順序(collation)では大文字小文字が区別されないため、「Adam」「baden」「Bob」「Carol」「Chris」のように大文字・小文字どちらの始まりでも同じようにマッチすることに注意してください。

  1. MySQLクエリで列名にエイリアス(別名)を設定する方法

    MySQLでは、SELECT文を使って列名に「エイリアス(別名)」を設定できます。エイリアスを利用すると、出力結果の見出しをわかりやすい名前に変更でき、レポート作成やアプリケーションでのデータ表示が格段に読みやすくなります。列名にエイリアスを設定する基本構文SELECT yourColumnName1 anyAliasName1, yourColumnName2 anyAliasName2FROM yourTableName anyAliasName;このように、列名の後にスペースを空けて任意の別名を記述するだけで、その列の表示名がエイリアスに置き換わります。テーブル名にも同様にエイリアスを設

  2. MySQL SLESリポジトリを使ったMySQLのアップグレード手順

    MySQLは、MySQL SLESリポジトリを利用することで簡単にアップグレードできます。ここでは、そのアップグレードに必要な手順を詳しく解説します。デフォルトでは、MySQL SLESリポジトリは、インストール時にユーザーが選択したリリースシリーズ内で最新バージョンへとMySQLを更新します。別のリリースシリーズへ更新したい場合は、現在選択されているシリーズのサブリポジトリを無効化する必要があります。また、複数のシリーズをまたいだ一括アップグレードは避け、必ず一つ隣のシリーズへ段階的にアップグレードすることが推奨されています。なお、MySQL SLESリポジトリを使用している場合、インプレー