ホームページ >データベース >mysql チュートリアル >バックスラッシュのエスケープが MySQL の WHERE 句と LIKE 句で異なるのはなぜですか?
MySQL の WHERE 句および LIKE 句のエスケープ文字
MySQL では、WHERE 句内のバックスラッシュ () などの特殊文字を検索するときに、追加のエスケープは必要ありません。ただし、LIKE 句の場合は、二重バックスラッシュ () が必要です。これは、MySQL が LIKE ステートメントのエスケープ文字としてデフォルトで使用するためです。
WHERE および LIKE でエスケープ文字が機能する理由と仕組みを理解する
WHERE 句では、MySQLそれ以上の処理を行わずに、指定された値を列の値と直接比較します。したがって、列内のバックスラッシュ文字と一致するには、単一のバックスラッシュ () で十分です。
LIKE 句では、MySQL はまず、指定されたパターンからバックスラッシュをすべて削除します。次に、パターン マッチング プロセス中に、残りのバックスラッシュが削除されます。この二重の削除プロセスでは、バックスラッシュ文字をエスケープし、LIKE 句で一致できるようにするために、二重のバックスラッシュ () が必要です。
例
提供された SQL クエリは次のとおりです。の違い:
(SELECT * FROM `titles` WHERE title = 'test\') UNION ALL (SELECT * FROM `titles` WHERE title LIKE 'test\\')
出力:
| ID | TITLE | -------------- | 1 | test\ | | 1 | test\ |
列値のバックスラッシュと一致するには、LIKE 句で二重バックスラッシュ () が必要です。
エスケープ文字の変更
必要に応じて、エスケープ文字を変更できます。 ESCAPE キーワードの後に目的の文字を指定することで、LIKE ステートメントで使用されます:
SELECT * FROM `titles` WHERE title LIKE 'test\' ESCAPE '|'
この場合、パイプ (|) がエスケープ文字として使用され、単一のバックスラッシュ () が一致するようになります。 LIKE 句。
以上がバックスラッシュのエスケープが MySQL の WHERE 句と LIKE 句で異なるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。