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

MySQLで列を大文字と小文字を区別する照合に変換する方法

MySQLで大文字と小文字を区別した検索を行うには

MySQLのデフォルトの照合順序(例:utf8_general_ci)は、末尾の「ci」が示すとおり大文字と小文字を区別しません。そのため、LIKE句で検索すると「Brown」「BROWN」「brown」などがすべて同じ文字列として扱われてしまいます。

大文字と小文字を厳密に区別して検索したい場合は、COLLATEを使って照合順序を「utf8_bin」に切り替えます。utf8_binは文字列をバイナリデータとして比較するため、英字の大小が完全に区別されるのが特徴です。

構文

select *from yourTableName where yourColumnName LIKE yourValue COLLATE utf8_bin;

それでは、実際にサンプルテーブルを作成して動作を確認してみましょう。

テーブルの作成

まず、次のようにテーブルを作成します。

mysql> create table DemoTable
    (
    LastName varchar(100)
    );
Query OK, 0 rows affected (0.51 sec)

レコードの挿入

insertコマンドを使って、大文字と小文字が混在するレコードをいくつか挿入します。

mysql> insert into DemoTable values('Brown');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('BROWN');
Query OK, 1 row affected (0.29 sec)
mysql> insert into DemoTable values('brown');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('BRoWN');
Query OK, 1 row affected (0.14 sec)

レコードの確認

selectステートメントですべてのレコードを表示してみます。

mysql> select *from DemoTable;

出力

+----------+
| LastName |
+----------+
| Brown    |
| BROWN    |
| brown    |
| BRoWN    |
+----------+
4 rows in set (0.00 sec)

COLLATEを使った大文字小文字を区別する検索

以下は、COLLATE utf8_binを指定して「BROWN」と完全に一致するレコードのみを取得するクエリです。

mysql> select *from DemoTable where LastName LIKE 'BROWN' COLLATE utf8_bin;

出力

+----------+
| LastName |
+----------+
| BROWN    |
+----------+
1 row in set (0.00 sec)

実行結果を見ると、「Brown」「brown」「BRoWN」は除外され、大文字と小文字が完全に一致する「BROWN」だけが抽出されました。

なお、クエリごとではなくテーブルの列自体を恒久的に大文字小文字を区別させたい場合は、ALTER TABLEで列の定義を変更し、COLLATE utf8_binを設定しておくことも可能です。用途に応じて使い分けるとよいでしょう。

  1. MySQLで最初の文字を使って列の値をフィルタリングする方法(LEFT関数の使い方)

    MySQLで先頭の文字による絞り込みを実現するにはMySQLでは、LEFT()関数を使うことで、列の値の先頭文字に基づいてレコードを簡単にフィルタリングできます。LEFT()関数は、文字列の左端から指定した数の文字を取り出す関数です。この記事では、実際にテーブルを作成し、社員名の頭文字でデータを絞り込む手順を順番に解説します。1. サンプルテーブルの作成まず、以下のようにテーブルを作成します。mysql> create table DemoTable1428  -> (  -> EmployeeId int NOT NULL AUTO_INCREMENT PRIMARY KE

  2. MySQLで列の最大値を取得する方法をわかりやすく解説

    MySQLで特定の列の最大値を取得するには、MAX(columnName)関数を使用します。本記事では、その基本的な使い方に加えて、データベースやテーブルの設計に関する前提知識もあわせて解説します。MySQLのデータベースとテーブルの基礎MySQLをインストールする前に、まず使用するバージョンと配布形式(バイナリファイルか、ソースファイルからビルドするか)を決定することが重要です。新しく作成したばかりのデータベースには、当然ながらテーブルはまだ存在しません。データベース設計において最も重要なのは、以下の要素を決めることです。データベース全体の構造必要となるテーブルの一覧各テーブルに含まれる列(