OceanBaseデータベースはBINARY強制型変換演算子をサポートしています。
BINARY演算子の構文
BINARY演算子の構文は以下のとおりです:
BINARY expr
BINARY演算子は、expr式をバイナリ文字列(バイナリ文字セットとバイナリソート規則を持つ文字列)に変換します。 文字列比較では、BINARYは通常、文字ごとの比較ではなく、文字列のバイナリ値を比較するために使用され、比較時には末尾のスペースが考慮されます。例:
obclient> SELECT 'aa' = 'AA';
+-------------+
| 'aa' = 'AA' |
+-------------+
| 1 |
+-------------+
1 row in set
obclient> SELECT BINARY 'aa' = 'AA';
+--------------------+
| BINARY 'aa' = 'AA' |
+--------------------+
| 0 |
+--------------------+
1 row in set
obclient> SELECT 'aa' = 'aa ';
+--------------+
| 'aa' = 'aa ' |
+--------------+
| 1 |
+--------------+
1 row in set
obclient> SELECT BINARY 'aa' = 'aa ';
+---------------------+
| BINARY 'aa' = 'aa ' |
+---------------------+
| 0 |
+---------------------+
1 row in set
バイナリ文字列変換の説明
OceanBaseデータベースでは、文字列式をバイナリ文字列に変換するには、以下の3つの方法を使用できます:
CONVERT(expr USING BINARY)
CAST(expr AS BINARY)
BINARY expr
注意点として、式内のBINARY演算子と、文字列定義内のBINARYデータ型は、異なる効果を持ちます。BINARY属性で定義された列に対しては、データベースはテーブルのデフォルト文字セットとその文字セットのバイナリ(_bin)ソート規則を割り当てます。各非バイナリ文字セットにはBinソート規則が存在します。例えば、テーブルのデフォルト文字セットがgbkの場合、以下の2つの列定義は等価です:
CHAR(5) BINARY
<=>
CHAR(5) CHARACTER SET gbk COLLATE gbk_bin
CHAR、VARCHAR、またはTEXT列の定義でCHARACTER SET binaryを使用すると、その列は対応するバイナリ文字列データ型と見なされます。以下の例の定義は等価です:
CHAR(5) CHARACTER SET binary
<=>
BINARY(5)
VARCHAR(10) CHARACTER SET binary
<=>
VARBINARY(10)
TEXT CHARACTER SET binary
<=>
BLOB