bit_shift_right_logical
数値式のバイナリ表現を指定されたビット数だけ右にシフトします。
この関数は論理右シフトを行い、ビット長は変わらず、下位ビットが削除され、元のビットが正または負であるかに関係なく、上位ビットに 0 が追加されます。論理シフトは符号なしシフトです。例えば、10101
を 1 ビットシフトすると 00101
になります。
bit_shift_right() と bit_shift_right_logical() は、正の値に対して同じ結果を返します。
構文
bit_shift_right_logical(value, shift)
パラメータ
value
: シフトする値または数値式。サポートされているデータ型は TINYINT、SMALLINT、INT、BIGINT、および LARGEINT です。
shift
: シフトするビット数。サポートされているデータ型は BIGINT です。
戻り値
value
と同じ型の値を返します。
使用上の注意
- 任意の入力パラメータが NULL の場合、NULL が返されます。
shift
が 0 未満の場合、0 が返されます。value
を0
でシフトすると、常に元のvalue
になります。0
をshift
でシフトすると、常に0
になります。value
のデータ型が数値で整数でない場合、その値は整数にキャストされます。例を参照してください。value
のデータ型が文字列の場合、可能であればその値は整数にキャストされます。例えば、文字列 "2.3" は 2 にキャストされます。値が整数にキャストできない場合、その値は NULL として扱われます。例を参照してください。
例
この関数を使用して数値をシフトします。
SELECT bit_shift_right_logical(2, 1);
+-------------------------------+
| bit_shift_right_logical(2, 1) |
+-------------------------------+
| 1 |
+-------------------------------+
SELECT bit_shift_right_logical(2.2, 1);
+---------------------------------+
| bit_shift_right_logical(2.2, 1) |
+---------------------------------+
| 1 |
+---------------------------------+
SELECT bit_shift_right_logical("2", 1);
+---------------------------------+
| bit_shift_right_logical('2', 1) |
+---------------------------------+
| 1 |
+---------------------------------+
SELECT bit_shift_right_logical(cast('-2' AS INTEGER(32)), 1);
+-----------------------------------------------+
| bit_shift_right_logical(CAST('-2' AS INT), 1) |
+-----------------------------------------------+
| 2147483647 |
+-----------------------------------------------+