ビット値は、プレフィックス b /B および 0b /0B で始まり、0 と 1 で構成される2進数です。 有効なビット値の例:
b'11'
B'11'
0b11
0B11
無効なビット値の例:
b'3' (3 は2進数ではありません)
デフォルトでは、ビット値はバイナリ文字列です:
obclient> SELECT b'1000001', CHARSET(b'1000001');
+------------+---------------------+
| b'1000001' | CHARSET(b'1000001') |
+------------+---------------------+
| A | binary |
+------------+---------------------+
1 row in set
obclient> SELECT 0b1100001, CHARSET(0b1100001);
+-----------+--------------------+
| 0b1100001 | CHARSET(0b1100001) |
+-----------+--------------------+
| a | binary |
+-----------+--------------------+
1 row in set
OceanBaseデータベースは、ビット値を整数として扱います。ビット値が数値として処理されないようにするには、0 を追加するか CAST(... AS UNSIGNED) を使用します。デフォルトでは、ユーザー定義変数に割り当てられるビット値はバイナリ文字列です。
obclient> SET @v1 = b'1100001';
Query OK, 0 rows affected
obclient> SET @v2 = b'1100001'+0;
Query OK, 0 rows affected
obclient> SET @v3 = CAST(b'1100001' AS UNSIGNED);
Query OK, 0 rows affected
obclient> SELECT @v1, @v2, @v3;
+------+------+------+
| @v1 | @v2 | @v3 |
+------+------+------+
| a | 97 | 97 |
+------+------+------+
1 row in set