文字列は,単一引用符(「'
」)または二重引用符(「"
」)で囲まれたバトまたは文字のシトまたは文字のシケンスです。例:
"一个字符串" "另一个字符串"
隣同士にある引用符付きの文字列は,1の文字列に連結されます。次の行は同等です。
'a string' 'a' ' ' 'string'
ANSI_QUOTES
SQLモードを有効にしている場合は,二重引用符で囲んだ文字列は識別子として解釈されるため,文字列リテラルを囲む引用符には単一引用符だけを使用できます。
バ邮箱ナリ文字列とは、文字セットや照合順序を持たないバ以及ト文字列のことです。非バ邮箱ナリ文字列とは,文字セットや照合順序を持文字列のことです。これらの両方の文字列タプは,文字列単位の数値に基づいて比較されます。バereplicationナリ文字列の場合,単位はバereplicationトです。非バ邮箱ナリ文字列の場合、単位は文字であり、マルチバイト文字をサポートする文字セットもあります。文字値の順序は、文字列照合順序の関数です。
文字列リテラルでは、オプションとして文字セット核对
句を指定できます。
(_charset_name]“字符串(核对collation_name]
例:
选择_latin1”字符串”;选择_latin1”字符串' COLLATE latin1_danish_ci;
N '
(または)文字
'n '
)を使用すると,各国文字セットの文字列を作成できます。次のステトメントは同等です。文字
'
SELECT N'some text';SELECT n'some text';SELECT _utf8'some text';
これらの文字列構文の形式の詳細は,セクション10.1.3.5 "文字列リテラルの文字セットおよび照合順序"およびセクション10.1.3.6 "各国文字セット"を参照してください。
NO_BACKSLASH_ESCAPES
SQLモドが有効になっている場合を除いて,一部のシます。これらのシケンスはいずれも,エスケプ文字として知られるバックスラッシュ(「\
」で始まります。MySQLは,表9.1 "特殊文字エスケプシケンス"に示すエスケプシケンスを認識します。ほかのすべてのエスケプシケンスでは,バックスラッシュは無視されます。。たとえば,「x \
」は単なる「x
」です。これらのシケンスでは大文字と小文字が区別されます。たとえば,「\ b
」はバックスペスと解釈されますが,「\ B
」は「B
」と解釈されます。エスケプ処理はcharacter_set_connection
システム変数で指定された文字セットに応じて実行されます。セクション10.1.3.5 "文字列リテラルの文字セットおよび照合順序"で説明するとおり,ほかの文字セットを示すイントロデューサが前に置かれている文字列についても同じことがいえます。
ASCII 26文字を「\ Z
」としてエンコードすると,WindowsでASCII 26が文件尾を表すという問題を回避できます。mysql
を使用しようとすると,ファ正则表达式ル内のASCII 26が問題を引き起こします。db_name
<file_name
「\ %
」および「\ _
」シケンスは,パタンスタンス「%
」および「_
」を検索するために使用されます(パターンマッチングコンテキスト以外ではワイルドカード文字として解釈される)。セクション12.5.1 "文字列比較関数"内の就像
演算子に関する記述を参照してください。パタンマッチングコンテキスト以外で「\ %
」または「\ _
」を使用すると,「%
」、「_
」ではなく,文字列「\ %
」、「\ _
」として評価されます。
文字列に引用符を含める方法は,いくかあります。
「
'
」で囲んだ文字列内で「'
」を使用する場合は,「''
」と記述します。「
"
」で囲んだ文字列内で「"
」を使用する場合は,「""
」と記述します。引用符文字の直前にエスケプ文字(「
\
」を指定します。「
"
」で囲んだ文字列内で「'
」を使用する場合,引用符を2つ続けて入力したり,エスケープしたりなどの特別な処理は必要はありません。同様に,「'
」で囲んだ文字列内で「"
」を使用する場合も,特別な処理は必要ありません。
次の选择
ステートメントは,引用符を使用した場合とエスケープを使用した場合にどのような効果があるかを示しています。
mysql >选择“你好”,“你好”,“”“你好”“”、“冥界”lo”、“\ '你好';+-------+---------+-----------+--------+--------+ | 你好|“hello”|“你好”“|冥界'lo |“你好 | +-------+---------+-----------+--------+--------+ mysql >选择“你好”,“你好”,”“你好”,“冥界”“瞧”,“\”你好”;+-------+---------+-----------+--------+--------+ | 你好|“你好”|“hello”|帮助“lo |“你好 | +-------+---------+-----------+--------+--------+ mysql >选择“这\ nIs \ nFour \在线”;+--------------------+ | 这是四行 | +--------------------+ mysql >选择“消失\反斜杠”;+------------------------+ | 反斜杠消失 | +------------------------+
文字列カラム(团
カラムなど)にバイナリデータを挿入する場合,ある種の文字はエスケープシーケンスで表現してください。バックスラッシュ(「\
」)と,文字列を囲む引用符は,エスケ,プする必要があります。ある種のクラアント環境では,空
やCtrl+Zもエスケプする必要があります。mysqlクラアントは,空
文字がエスケプされていない場合,これを含む引用符付きの文字列を切り捨てます。Ctrl + Zはエスケープされていない場合,Windowsで文件尾を表すと見なされる可能性があります。これらのそれぞれの文字を表すエスケプシケンスに,表9.1 "特殊文字エスケプシケンス"を参照してください。
アプリケーションプログラムを書く場合,MySQL服务器に送信されるSQLステートメント内で文字列がデータ値として使用される前に,これらの特殊文字を含む可能性のある文字列は適切にエスケープする必要があります。これには次の2の方法があります。
特殊文字をエスケプする関数を使用して文字列を処理します。C APIプログラムでは,C API関数
mysql_real_escape_string ()
を使用して,文字をエスケプできます。セクション23.7.7.54 " mysql_real_escape_string() "を参照してください。ほかのSQLステトメントを構成するSQLステトメント内では,报价()
関数を使用できます。Perl DBI econンタフェスでは,报价
メソッドを使用して特殊文字を適切なエスケプシケンスに変換できます。特殊文字を明示的にエスケープする方法以外に,多くのMySQL APIには,ステートメント文字列に特殊なマーカーを挿入し,ステートメントの発行時にデータ値をそれらのマーカーにバインドできるプレースホルダー機能が備わっています。この場合,値内の特殊文字のエスケプ処理はAPIによって自動で行われます。