無料PHPプログラム

MySQL 5.1 リファレンスマニュアル :: 9 キャラクタセットサポート :: 9.5 照合順序に関して :: 9.5.3 BINARY オペレータ
« 9.5.2 COLLATE節の優先順位

9.5.4 照合順序を決定するのが難しい特殊なケース »
Section Navigation      [Toggle]
  • 9.5 照合順序に関して
  • 9.5.1 SQLステートメントCOLLATE節を使用する
  • 9.5.2 COLLATE節の優先順位
  • 9.5.3 BINARY オペレータ
  • 9.5.4 照合順序を決定するのが難しい特殊なケース
  • 9.5.5 照合順序は適切なキャラクタセットに対応していること。
  • 9.5.6 照合順序がもたらす結果の例

9.5.3. BINARY オペレータ

BINARYオペレータは2進性の文字列に続く文字列を送信します。キャラクタ毎よりも、バイト毎の比較を強制的に行う簡単な方法です。BINARYは後続のスペースにも重要な意味を持たせます。

mysql> SELECT 'a' = 'A';
        -> 1
mysql> SELECT BINARY 'a' = 'A';
        -> 0
mysql> SELECT 'a' = 'a ';
        -> 1
mysql> SELECT BINARY 'a' = 'a ';
        -> 0

BINARY strはCAST(str AS BINARY)の略でもあります。

キャラクタカラム定義のBINARY性質は別の効果があります。BINARY性質で定義されたキャラクタカラムはカラムのキャラクタセットの二進節を割り当てられます。全てのキャラクタセットに二進節があります。例えば、latin1 キャラクタセットの二進節はlatin1_binです。よってデフォルトキャラクタセットがlatin1の場合、下記の2カラムの定義は等価になります。

CHAR(10) BINARY
CHAR(10) CHARACTER SET latin1 COLLATE latin1_bin

BINARYのカラム性質としての効果はMySQL4.1.の時のそれと効果に違いがあります。以前、BINARYは結果二進文字列として扱われたカラムになりました。二進文字列は、キャラクタセットや照合順序のないバイトの列で、二進照合順序のある非二審キャラクタ文字列とは違います。両文字列にとって、比較は文字列のユニットの数値をもって行われます。しかし非二審文字列にとってはユニットはキャラクタであり、キャラクタセットの中にはマルチバイトキャラクタを許容しているものもあります。 項10.4.2. 「BINARY と VARBINARY タイプ」.

CHARACTER SET binaryのCHAR、VARCHARあるいはTEXTカラム定義での使用は二進性のデータタイプとしてカラムを扱うことになります。例えば、下記の定義は等価です

CHAR(10) CHARACTER SET binary
BINARY(10)

VARCHAR(10) CHARACTER SET binary
VARBINARY(10)

TEXT CHARACTER SET binary
BLOB
Copyright c 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates

無料CGI PHPスクリプト | 新着情報スクリプト | 営業日カレンダー | PHPマニュアル | MySQLマニュアル | PEARマニュアル

Copyright (c) 2010 jmcodex.com All rights reserved.