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

MySQLのLIKEクエリで「%」を含む列値を検索する方法【エスケープ処理の基本】

MySQLのLIKEクエリで「%」を含む値を検索するには?

MySQLでは、「%」はLIKE句におけるワイルドカードとして機能するため、そのまま検索することはできません。「%」という文字そのものを含む列値を検索したい場合は、バックスラッシュ(\)によるエスケープ処理が必要です。

基本構文

「%」を含む列値を検索する場合の構文は以下の通りです。

select * from yourTableName
where yourColumnName LIKE '\%%';

ポイントは、検索対象の「%」の直前に「\(バックスラッシュ)」を付けることです。これにより、ワイルドカードではなく通常の文字として扱われます。

実際にテーブルを作成して確認してみよう

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

mysql> create table DemoTable1497
    -> (
    -> Name varchar(20)
    -> );
Query OK, 0 rows affected (0.55 sec)

次に、INSERT文を使ってレコードを挿入します。ここでは「%」が先頭または末尾に含まれるデータも登録しています。

mysql> insert into DemoTable1497 values('%JohnSmith');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1497 values('DavidMiller');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable1497 values('CarolTaylor%');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable1497 values('%DavidMiller');
Query OK, 1 row affected (0.12 sec)

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

mysql> select * from DemoTable1497;

実行結果は以下のようになります。

+--------------+
| Name         |
+--------------+
| %JohnSmith   |
| DavidMiller  |
| CarolTaylor% |
| %DavidMiller |
+--------------+
4 rows in set (0.00 sec)

「%」を含むレコードをLIKEクエリで検索する

それでは、「%」という文字を含む列値をLIKEクエリで検索してみます。

mysql> select * from DemoTable1497
    -> where Name LIKE '\%%';

実行すると、次の出力が得られます。

+--------------+
| Name         |
+--------------+
| %JohnSmith   |
| %DavidMiller |
+--------------+
2 rows in set (0.00 sec)

まとめ

この例では、先頭に「%」が含まれる2件のレコードだけが抽出されました。これは「'\%'」によって「%」がワイルドカードではなくリテラル文字として認識され、その後に続く「%」が任意の文字列にマッチするパターンとして機能したためです。

なお、末尾に「%」がある「CarolTaylor%」も検索対象に含めたい場合は、LIKE '%\%'のように記述します。また、SQLモードや設定によってはESCAPE句でエスケープ文字を明示的に指定することも可能なので、状況に応じて使い分けるとよいでしょう。

  1. MySQLで1つのINSERT文を使って列に複数の値を一括挿入する方法

    はじめにMySQLでは、1つのINSERT文を繰り返し実行しなくても、単一のクエリだけで同じ列に複数の値を挿入できます。VALUES句の後ろに、挿入したい値をカンマ区切りのタプル(行)として列挙するだけです。この方法はデータベースへの接続回数を減らせるため、大量のデータを登録する際にパフォーマンス面でも大きなメリットがあります。基本構文複数の値を1つの列に挿入する場合の基本構文は以下のとおりです。INSERT INTO テーブル名 VALUES(値1),(値2),...,(値N);このように、各値を丸括弧で囲み、カンマ(,)で区切って並べることで、1回のクエリで複数行をまとめて挿入できます。実

  2. JavaとMySQLでLIKE検索を使う際、検索変数の引用符を正しく記述する方法

    JavaからMySQLに接続し、LIKE句で検索変数(キーワード)を使ったあいまい検索を行う場合、SQL文中の文字列を正しくシングルクォート()で囲むことが重要です。まず、検索変数を使ったLIKE句の正しい構文を見てみましょう。String sqlQuery; sqlQuery = select * from yourTableName where yourColumnName like % + yourSearchVariableName + %;それでは、実際にサンプルテーブルを作成して動作を確認していきます。サンプルテーブルの作成まず、テーブルを作成します。mysql> creat