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

MySQLのCOLLATE句を使って大文字小文字を区別した正確な文字列値を検索する方法

MySQLでは、デフォルトの照合順序(utf8_general_ci など)を使用している場合、文字列の検索は大文字と小文字を区別せずに行われます。しかし、「MySQL」と「MYSQL」のように大文字・小文字の違いまで含めて完全に一致するレコードだけを取得したいケースもあります。そんなときに役立つのが COLLATE 句とバイナリ照合順序(utf8_bin)です。

サンプルテーブルの作成

まず、テーブルを作成しましょう。

mysql> create table DemoTable1620
    -> (
    -> Subject varchar(20)
    -> );
Query OK, 0 rows affected (0.42 sec)

レコードの挿入

insertコマンドを使って、大文字と小文字の組み合わせが異なる複数のレコードをテーブルに挿入します。

mysql> insert into DemoTable1620 values('mysql');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1620 values('MySql');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable1620 values('mYSQL');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable1620 values('MySQL');
Query OK, 1 row affected (0.26 sec)
mysql> insert into DemoTable1620 values('MYSQL');
Query OK, 1 row affected (0.20 sec)

登録済みレコードの確認

select文を使ってテーブル内のすべてのレコードを表示します。

mysql> select * from DemoTable1620;

実行すると次のような出力が得られます。

+---------+
| Subject |
+---------+
| mysql   |
| MySql   |
| mYSQL   |
| MySQL   |
| MYSQL   |
+---------+
5 rows in set (0.00 sec)

COLLATEを使った完全一致検索

MySQLで正確な文字列値を検索するためのクエリは以下の通りです。WHERE句の中でカラム名の後に「collate utf8_bin」を指定することで、バイナリ比較が行われ、大文字・小文字を含めた完全一致の検索が可能になります。

mysql> select * from DemoTable1620 where Subject collate utf8_bin = 'MySQL';

実行すると次のような出力が得られます。

+---------+
| Subject |
+---------+
| MySQL   |
+---------+
1 row in set (0.00 sec)

まとめ

出力結果を見ると、「MySQL」という文字列と完全に一致する1件のみが返されていることがわかります。このように、COLLATE句にutf8_binを指定すれば、テーブルのデフォルト照合順序による大文字小文字を区別しない挙動に関係なく、厳密な文字列比較を実現できます。ログ解析やID照合など、正確性が求められる検索処理にぜひ活用してください。

  1. JavaでMySQLデータベースに接続する方法|JDBC接続の基本を解説

    MySQLデータベースへの接続URLJavaからMySQLデータベースに接続するには、JDBC(Java Database Connectivity)ドライバを使用します。まず、接続に必要な情報として、以下のようなURL・ユーザー名・パスワードを用意します。String MySQLURL = jdbc:mysql://localhost:3306/yourDatabaseName?useSSL=false; String databseUserName = yourUserName; String databasePassword = yourPassword;接続URLを構成する各要素の意味

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

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