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