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は自動的に数値から変換されます.