MySQLデータ入庫時の特殊文字処理

3565 ワード


1つの文字列で、シーケンスに特別な意味がある場合、各シーケンスは、エスケープ文字と呼ばれる逆斜線記号("/")で始まります.MySQLは次のエスケープ文字を認識します./0
ASCII 0(NUL)文字./'
ASCII 39単一引用符(
'')の文字./"
ASCII 34二重引用符(
"")の文字./b
ASCII 8チェックアウト文字./n
ASCII 10改行文字./r
ASCII 13リターンカードです./t
ASCII 9タブ(TAB ). /z
ASCII(26) (Control-Z).この文字は、WindowsシステムにおけるASCII(26)がファイルの終了を表す問題を処理することができる.(使用時mysql database < filenameでASCII(26)が問題を引き起こす可能性があります.)//
ASCII 92の反斜線(
"/")文字./%
ASCII 37
「%」文字.本文で検索するために使用されます
「%」のテキストインスタンス
「%」はワイルドカードとして解釈されます./_
ASCII 95
“_” 文字.本文で検索するために使用されます
“_”を選択します.
“_”ワイルドカードとして解釈されます.
なお、一部の本文環境で「/%」または「/」を使用する場合は、文字列「/%」と「/」が返されます.「%」と「」ではありません.
文字列に引用符が含まれているものには、次のような書き方があります.
  • 文字列は、「」で変換できる単一引用符「'」で参照されます.
  • 文字列は、二重引用符「」で参照され、この文字列の「」文字は「」で変換できます.
  • また、引用符の前にエスケープ文字「/」を付けてエスケープする方法を引き続き使用することもできます.
  • 文字列は二重引用符「」で参照され、この文字列の一重引用符「'」は特別な扱いを必要とせず、重複や転義を必要としない.同様に、一つの文字列は二重引用符「'」で参照され、この文字列の二重引用符「」は特別な扱いを必要とせず、重複や転義を必要としない.

  • 次に示すSELECTは、引用符とエスケープがどのように動作するかを示します.
    mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '/'hello';
    +-------+---------+-----------+--------+--------+
    | hello | "hello" | ""hello"" | hel'lo | 'hello |
    +-------+---------+-----------+--------+--------+
    mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "/"hello";
    +-------+---------+-----------+--------+--------+
    | hello | 'hello' | ''hello'' | hel"lo | "hello |
    +-------+---------+-----------+--------+--------+
    mysql> SELECT "This/nIs/nFour/nlines";
    +--------------------+
    | This
    Is
    Four
    lines |
    +--------------------+
    

     
    バイナリ・データを1つの文字タイプのフィールド(たとえばBLOB)に挿入する場合は、次の文字をエスケープ・シーケンスで表す必要があります.NUL
    ASCII 0、あなたは使うべきです
    "/0"(反斜線とASCII)
    「0」文字)は、これを表します./
    ASCII 92、反斜線.必要
    「//」表示.'
    ASCII 39、一重引用符.必要
    「/'」は表します."
    ASCII 34、二重引用符.必要
    「/」は表示されます.
     
    上記の特殊な文字を含む可能性のある文字列では、エスケープ関数を使用する必要があります.
    また、多くのMySQL APIでは、クエリー文に特殊なタグを挿入し、クエリーを実行するときにデータ値をバインドするプレースホルダ処理機能が提供されています.これにより、APIは自動的に数値から変換されます.