ホームページ >バックエンド開発 >PHPチュートリアル >MySQL の LIKE 演算子を使用してスラッシュを検索するときに二重バックスラッシュが必要なのはなぜですか?

MySQL の LIKE 演算子を使用してスラッシュを検索するときに二重バックスラッシュが必要なのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-02 19:20:021037ブラウズ

Why Do I Need Double Backslashes When Searching for a Slash Using MySQL's LIKE Operator?

検索クエリの MySQL エスケープ シーケンスについて

MySQL では、WHERE 句を使用してスラッシュ文字 () を検索するときに、使用する演算子に応じてエスケープ シーケンスの必要性が異なります。

等号 (=) 演算子を使用した WHERE 句

等号 (=) 演算子の場合、追加のエスケープはありません順序が必要です。次のクエリは、スラッシュ文字を含むタイトルを持つレコードを正しく検索します:

<code class="sql">SELECT * FROM `titles` WHERE title = 'test\'</code>

これは、比較を実行する前にバックスラッシュが MySQL によって内部的にエスケープされるためです。

WHERE LIKE 演算子を使用した句

ただし、LIKE 演算子を使用する場合は、バックスラッシュに追加のエスケープ シーケンスが必要です。これは、LIKE 演算子が C エスケープ構文に従っており、2 つのバックスラッシュを使用して別のバックスラッシュをエスケープするためです。したがって、LIKE を使用してスラッシュ文字を検索するには、次の構文を使用する必要があります:

<code class="sql">SELECT * FROM `titles` WHERE title LIKE 'test\\'</code>

デフォルトのエスケープ文字

デフォルトでは、バックスラッシュ () LIKE 式のエスケープ文字として使用されます。これは、ESCAPE 句を使用して別のエスケープ文字を指定することで変更できます。たとえば、次のクエリではエスケープ文字としてパイプ文字 (|) が使用されます:

<code class="sql">SELECT * FROM `titles` WHERE title LIKE 'test\' ESCAPE '|'</code>

以上がMySQL の LIKE 演算子を使用してスラッシュを検索するときに二重バックスラッシュが必要なのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。