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句で別のエスケープ文字を指定する必要がある点にも注意してください。
-
MySQLで最初の文字を使って列の値をフィルタリングする方法(LEFT関数の使い方)
MySQLで先頭の文字による絞り込みを実現するにはMySQLでは、LEFT()関数を使うことで、列の値の先頭文字に基づいてレコードを簡単にフィルタリングできます。LEFT()関数は、文字列の左端から指定した数の文字を取り出す関数です。この記事では、実際にテーブルを作成し、社員名の頭文字でデータを絞り込む手順を順番に解説します。1. サンプルテーブルの作成まず、以下のようにテーブルを作成します。mysql> create table DemoTable1428 -> ( -> EmployeeId int NOT NULL AUTO_INCREMENT PRIMARY KE
-
MySQLで列内の特定の文字を置き換える方法|REPLACE()関数とUPDATE文の使い方
MySQLである列に含まれる特定の文字を別の文字に置き換えたい場合、REPLACE() 関数と UPDATE 文を組み合わせることで簡単に実現できます。この記事では、実際のサンプルコードを交えながら、具体的な手順をわかりやすく解説します。1. テーブルを作成するまずは動作確認用のサンプルテーブルを作成しましょう。ここでは「Code」という varchar 型のカラムを持つテーブルを定義します。mysql> create table DemoTable1899 ( Code varchar(20) ); Query OK, 0 rows affected (0.00