MySQL の WHERE 句でスラッシュ () のクエリを実行すると、2 つの異なるシナリオが発生します。 : 等号 (=) 演算子を使用する場合と LIKE 演算子を使用する場合。
= 演算子の場合、追加のエスケープはありません。必須。 MySQL は、比較される値の整合性を維持するために、それを自動的にエスケープします。クエリ例では、(SELECT * FROM Titles where title = 'test') は、期待どおり、タイトル 'test' のレコードを返します。
対照的に、LIKE 演算子はエスケープ用の特殊文字として解釈されるため、スラッシュ () を二重にエスケープする必要があります。 LIKE 句で単一を検索するには、代わりにそれを指定する必要があります。これは、MySQL がバックスラッシュを 2 回削除するためです。1 回目は解析中、もう 1 回はパターン マッチング中にです。
クエリ例では、(SELECT * FROM タイトル where title LIKE 'test\') は、タイトル 'test' のレコードを返します。 '、二重バックスラッシュ () が処理中の除去を補うためです。
必要に応じて、次のようにして LIKE のエスケープ文字をカスタマイズできます。 ESCAPE キーワードを使用します。たとえば、次のように指定できます。
SELECT * FROM `titles` WHERE title LIKE 'test\' ESCAPE '|'
この場合、パイプ (|) は、デフォルトのバックスラッシュ () の代わりにエスケープ文字として機能します。これにより、二度エスケープすることなく LIKE クエリで使用できるようになります。
以上がMySQL の WHERE 句でスラッシュ (/) をクエリするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。