ホームページ > データベース > mysql チュートリアル > MySQL の WHERE 句と LIKE 句で異なるバックスラッシュ エスケープが必要なのはなぜですか?

MySQL の WHERE 句と LIKE 句で異なるバックスラッシュ エスケープが必要なのはなぜですか?

Patricia Arquette
リリース: 2025-01-06 20:34:41
オリジナル
608 人が閲覧しました

Why Do MySQL's WHERE and LIKE Clauses Require Different Backslash Escaping?

MySQL でのバックスラッシュのエスケープ: WHERE 句と LIKE 句での使用法

バックスラッシュを含むタイトルを検索する次のクエリを考えてみましょう。

>
(SELECT * FROM `titles` WHERE title = 'test\')
UNION ALL
(SELECT * FROM `titles` WHERE title LIKE 'test\\')
ログイン後にコピー

出力はバックスラッシュがエスケープされていないことを示していますWHERE句内で。ただし、LIKE 句には追加のバックスラッシュが必要です。

なぜ違いますか?

MySQL では、デフォルトでバックスラッシュ () が LIKE のエスケープ文字として機能します。 LIKE の MySQL マニュアルによると:

「MySQL は文字列で C エスケープ構文を使用するため...LIKE 文字列で使用する '' はすべて 2 倍にする必要があります。たとえば、「n」を検索するには、次のように指定します。 '' を検索するには、'\' として指定します。これは、バックスラッシュがパーサーによって一度削除され、パターンの一致時に再度削除され、単一のバックスラッシュが残されるためです。 "

バックスラッシュのエスケープ

ただし、MySQL には、ESCAPE キーワードを使用してエスケープ文字を変更する機能が用意されています。たとえば、次のクエリではエスケープ文字としてパイプ文字 (|) を使用します:

SELECT * FROM `titles` WHERE title LIKE 'test\' ESCAPE '|'
ログイン後にコピー

このクエリでは、パイプ文字が使用されるため、LIKE 句にバックスラッシュが 1 つだけ必要です。逃げるため。

以上がMySQL の WHERE 句と LIKE 句で異なるバックスラッシュ エスケープが必要なのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート