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を設定しておくことも可能です。用途に応じて使い分けるとよいでしょう。
-
MySQLで最初の文字を使って列の値をフィルタリングする方法(LEFT関数の使い方)
MySQLで先頭の文字による絞り込みを実現するにはMySQLでは、LEFT()関数を使うことで、列の値の先頭文字に基づいてレコードを簡単にフィルタリングできます。LEFT()関数は、文字列の左端から指定した数の文字を取り出す関数です。この記事では、実際にテーブルを作成し、社員名の頭文字でデータを絞り込む手順を順番に解説します。1. サンプルテーブルの作成まず、以下のようにテーブルを作成します。mysql> create table DemoTable1428 -> ( -> EmployeeId int NOT NULL AUTO_INCREMENT PRIMARY KE
-
MySQLで列の最大値を取得する方法をわかりやすく解説
MySQLで特定の列の最大値を取得するには、MAX(columnName)関数を使用します。本記事では、その基本的な使い方に加えて、データベースやテーブルの設計に関する前提知識もあわせて解説します。MySQLのデータベースとテーブルの基礎MySQLをインストールする前に、まず使用するバージョンと配布形式(バイナリファイルか、ソースファイルからビルドするか)を決定することが重要です。新しく作成したばかりのデータベースには、当然ながらテーブルはまだ存在しません。データベース設計において最も重要なのは、以下の要素を決めることです。データベース全体の構造必要となるテーブルの一覧各テーブルに含まれる列(