ホームページ >バックエンド開発 >PHPチュートリアル >MySQL の LIKE 演算子を使用してスラッシュを検索するときに二重バックスラッシュが必要なのはなぜですか?
検索クエリの 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 サイトの他の関連記事を参照してください。