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

MySQLで文字列を大文字小文字を区別して完全一致検索する方法(COLLATE活用)

MySQLで正確な文字列値(完全一致)を検索するには?

MySQLでは、デフォルトの照合順序(collation)が大文字と小文字を区別しないため、WHERE Subject = 'MySQL'のような検索では「mysql」や「MYSQL」などもヒットしてしまいます。

大文字小文字まで含めて完全に一致する文字列値だけを検索したい場合は、COLLATE utf8_binを使用します。ここでは、その具体的な手順をサンプルコード付きで解説します。

1. サンプルテーブルを作成する

まず、検索対象となるテーブルを作成します。

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

2. テストデータを挿入する

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)

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

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

mysql> select * from DemoTable1620;

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

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

4. COLLATEを使って完全一致検索を実行する

以下のクエリのように、検索対象のカラムに対してcollate utf8_binを指定することで、バイナリ比較による大文字小文字を区別した検索が可能になります。

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

実行結果を見ると、「MySQL」という表記のレコードのみが取得できていることがわかります。

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

まとめ

  • MySQLのデフォルト照合順序(utf8_general_ciなど)は大文字小文字を区別しないため、通常の比較では表記ゆれのレコードもマッチします。
  • WHERE カラム名 COLLATE utf8_bin = '値'と指定すると、バイナリ比較によって大文字小文字を含めた完全一致検索ができます。
  • テーブルやカラム作成時にあらかじめutf8_bin照合順序を指定しておく方法もあります。

このようにCOLLATEを活用すれば、MySQLでも正確な文字列値の検索を簡単に実現できます。

  1. JavaScriptで文字列を検索する方法【search()メソッドの使い方を解説】

    JavaScriptで文字列を検索する方法 JavaScriptで文字列の中から特定の文字列を探すには、search()メソッドを使用します。このメソッドは、引数に渡した文字列(または正規表現)が対象の文字列内で最初に一致した位置(インデックス)を返し、見つからなかった場合は -1 を返します。 以下は、JavaScriptで文字列を検索するサンプルコードです。 サンプルコード <!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8" />

  2. C#で文字列のハッシュコード(HashCode)を取得する方法

    C#で文字列のハッシュコードを取得するには、GetHashCode()メソッドを使用します。このメソッドは、文字列の内容に基づいて整数値(int型)のハッシュコードを返します。ハッシュコードは、辞書(Dictionary)やハッシュセット(HashSet)などのハッシュベースのコレクションで、オブジェクトを高速に検索・比較するために利用されます。基本的な使い方以下の例では、2つの異なる文字列に対してGetHashCode()メソッドを呼び出し、それぞれのハッシュコードと等価性の判定結果を出力しています。using System; public class Demo {