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

MySQLでハイフンを含むレコードを大文字・小文字を区別して完全一致検索する方法

MySQLでは、WHERE句の後にBINARY演算子を使用することで、大文字と小文字を区別した完全一致検索が可能になります。デフォルトの照合順序(collation)では文字列比較が大文字・小文字を区別しないため、厳密な一致を求める場合にはBINARYキーワードが有効です。

まず、サンプル用のテーブルを作成しましょう。

mysql> create table DemoTable
    -> (
    -> EmployeeCode varchar(100)
    -> );
Query OK, 0 rows affected (0.64 sec)

次に、INSERTコマンドを使ってテーブルにいくつかのレコードを挿入します。ここでは、同じ英数字でも大文字と小文字が異なるデータを意図的に登録しています。

mysql> insert into DemoTable values('EMP-1122');
Query OK, 1 row affected (0.13 sec)

mysql> insert into DemoTable values('emp-1122');
Query OK, 1 row affected (0.43 sec)

mysql> insert into DemoTable values('EMP-6756');
Query OK, 1 row affected (0.19 sec)

mysql> insert into DemoTable values('EMP-8775');
Query OK, 1 row affected (0.16 sec)

SELECT文ですべてのレコードを表示して確認します。

mysql> select *from DemoTable;

出力結果

上記のクエリを実行すると、次のような出力が得られます。

+--------------+
| EmployeeCode |
+--------------+
| EMP-1122     |
| emp-1122     |
| EMP-6756     |
| EMP-8775     |
+--------------+
4 rows in set (0.00 sec)

テーブルには「EMP-1122」と「emp-1122」という、大文字・小文字のみが異なる2つのレコードが存在します。通常のSELECT文で検索すると、両方のレコードがヒットしてしまいます。

そこで、大文字・小文字を区別した完全一致でレコードを取得するには、以下のようにWHERE句の後にBINARYを指定します。

mysql> select *from DemoTable WHERE BINARY EmployeeCode='EMP-1122';

出力結果

このクエリを実行すると、大文字表記の「EMP-1122」に完全一致するレコードのみが返されます。

+--------------+
| EmployeeCode |
+--------------+
| EMP-1122     |
+--------------+
1 row in set (0.00 sec)

このように、BINARY演算子を使うことで、ハイフンを含む社員コードなどの文字列に対しても、大文字・小文字を厳密に区別した正確な検索が実現できます。なお、大量のデータを扱う場合はBINARYによる比較でインデックスが利用されなくなる可能性があるため、パフォーマンスが必要な場面ではバイナリ照合順序(utf8mb4_binなど)をカラムに設定しておく方法も検討するとよいでしょう。

  1. MySQLのSELECT *で重複しないID(一意な値)を取得する方法

    MySQLでテーブルから全カラム(SELECT *)を取得しつつ、特定のカラムの重複を排除して一意なIDだけを取り出したい場合があります。そんなときはGROUP BY句を使うことで実現できます。基本構文SELECT * FROM テーブル名 GROUP BY カラム名;指定したカラムの値ごとにレコードがグループ化され、各グループから1行ずつ結果として返されます。その結果、重複したIDを持つ行は1行にまとめられます。サンプルテーブルの作成実際に動きを確認するため、テーブルを作成してみましょう。mysql> create table DistinctIdDemo -> (

  2. JavaでMySQLのSELECTクエリにPreparedStatement(プリペアドステートメント)を使う方法

    executeQuery()メソッドの基本的な使い方JavaからMySQLに対してSELECTクエリを実行する場合は、PreparedStatementオブジェクトのexecuteQuery()メソッドを使用します。基本構文は以下の通りです。yourPreparedStatementObject = yourConnectionObject.prepareStatement(yourQueryName);yourResultSetObject = yourPreparedStatementObject.executeQuery();それでは、実際にサンプルデータベース「sample」を使って手