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

MySQLで文字列の左側や中央にある「%」文字をエスケープする方法

はじめに

MySQLのLIKE句では「%」はワイルドカードとして機能するため、検索対象の文字列に含まれる「%」そのものを検索したい場合にはエスケープ処理が必要です。この記事では、列の値の中に「%」が左端や中央に含まれているレコードを正しく抽出する方法を解説します。

サンプルテーブルの作成

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

mysql> create table DemoTable629 (StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,StudentSubject text);
Query OK, 0 rows affected (0.77 sec)

レコードの挿入

INSERTコマンドを使って、いくつかのレコードを挿入します。

mysql> insert into DemoTable629(StudentSubject) values('MySQL%');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable629(StudentSubject) values('Spring%Hibernate');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable629(StudentSubject) values('%Java');
Query OK, 1 row affected (0.21 sec)

レコードの確認

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

mysql> select *from DemoTable629;

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

+-----------+------------------+
| StudentId | StudentSubject   |
+-----------+------------------+
|         1 | MySQL%           |
|         2 | Spring%Hibernate |
|         3 | %Java            |
+-----------+------------------+
3 rows in set (0.00 sec)

「%」文字をエスケープして検索する

文字列としての「%」を検索するには、バックスラッシュ(\)を使ってエスケープします。以下のクエリでは、「%\%」というパターンを使用することで、「%」で終わる文字列(つまり末尾にリテラルの「%」を持つレコード)だけを抽出しています。

mysql> select *from DemoTable629
    -> where StudentSubject like '%\%';

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

+-----------+----------------+
| StudentId | StudentSubject |
+-----------+----------------+
|         1 | MySQL%         |
+-----------+----------------+
1 row in set (0.00 sec)

ポイントのまとめ

LIKE句内でワイルドカードとしての「%」ではなく、文字としての「%」を扱いたい場合は、直前にバックスラッシュを置いて「\%」と記述します。これにより、パターンの先頭・中央・末尾など任意の位置にある「%」文字を正確にマッチさせることができます。なお、NO_BACKSLASH_ESCAPESモードが有効な環境では、ESCAPE句で別のエスケープ文字を指定する必要がある点にも注意してください。

  1. MySQLで最初の文字を使って列の値をフィルタリングする方法(LEFT関数の使い方)

    MySQLで先頭の文字による絞り込みを実現するにはMySQLでは、LEFT()関数を使うことで、列の値の先頭文字に基づいてレコードを簡単にフィルタリングできます。LEFT()関数は、文字列の左端から指定した数の文字を取り出す関数です。この記事では、実際にテーブルを作成し、社員名の頭文字でデータを絞り込む手順を順番に解説します。1. サンプルテーブルの作成まず、以下のようにテーブルを作成します。mysql> create table DemoTable1428  -> (  -> EmployeeId int NOT NULL AUTO_INCREMENT PRIMARY KE

  2. MySQLで列内の特定の文字を置き換える方法|REPLACE()関数とUPDATE文の使い方

    MySQLである列に含まれる特定の文字を別の文字に置き換えたい場合、REPLACE() 関数と UPDATE 文を組み合わせることで簡単に実現できます。この記事では、実際のサンプルコードを交えながら、具体的な手順をわかりやすく解説します。1. テーブルを作成するまずは動作確認用のサンプルテーブルを作成しましょう。ここでは「Code」という varchar 型のカラムを持つテーブルを定義します。mysql> create table DemoTable1899 ( Code varchar(20) ); Query OK, 0 rows affected (0.00