NO_BACKSLASH_ESCAPES モードを使用した MySQL でのリテラル パーセントとアンダースコア文字のエスケープ
MySQL が NO_BACKSLASH_ESCAPES モードで実行されている場合、リテラル パーセントをエスケープする標準的な方法バックスラッシュを使用した (%) およびアンダースコア (_) 文字() 文字は適用されません。この記事では、特にこのモードでこれらの文字をエスケープする別の方法を説明します。
問題
次の例を考えてみましょう: MySQL テーブルの列には、「5」のような値が含まれています。 %オフ」と「50%オフ」。標準のバックスラッシュ エスケープ文字を使用する次の LIKE クエリは、NO_BACKSLASH_ESCAPES モードでは機能しません:
SELECT * FROM mytable WHERE mycol LIKE '5\% off'
Solution
NO_BACKSLASH_ESCAPES モードでは、パーセントをエスケープできます。およびアンダースコア文字は別のエスケープ シーケンスを使用します。 1 つのオプションは、エスケープ キーワードの前にバックスラッシュ文字を使用することです。例:
SELECT * FROM mytable WHERE mycol LIKE '5\% off' ESCAPE '\'
代替解決策
または、エスケープにパイプ (|) 文字などの別の文字を使用することもできます。以下のクエリは、NO_BACKSLASH_ESCAPES モードの設定に関係なく機能します。
SELECT * FROM mytable WHERE mycol LIKE '5|% off' ESCAPE '|'
これらの手法を使用すると、NO_BACKSLASH_ESCAPES モードの場合でも、MySQL クエリ内のリテラルのパーセント文字とアンダースコア文字を効果的にエスケープできます。
以上がMySQL の NO_BACKSLASH_ESCAPES モードでパーセント文字とアンダースコア文字をエスケープする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。