RIGHT_SHIFT (Transact SQL)

Berlaku untuk: Titik akhir analitik SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL di Microsoft FabricWarehouse di Microsoft Fabric

RIGHT_SHIFT mengambil dua parameter, dan mengembalikan parameter pertama yang digeser bit ke kanan dengan jumlah bit yang ditentukan dalam parameter kedua.

Fungsi RIGHT_SHIFT juga dapat diakses melalui >> operator.

Konvensi sintaks transact-SQL

Sintaks

RIGHT_SHIFT ( expression_value, shift_amount )
expression_value >> shift_amount

Argumen

expression_value

Bilangan bulat atau ekspresi biner apa pun yang bukan objek besar (LOB).

shift_amount

Jumlah bit yang expression_value harus digeser. shift_amount harus berupa tipe bilangan bulat.

Jenis yang dikembalikan

Mengembalikan jenis yang sama dengan expression_value.

Parameter shift_amount dilemparkan ke bigint. Parameternya bisa positif atau negatif, dan juga bisa lebih besar dari jumlah bit dalam jenis data expression_value. Ketika shift_amount negatif, pergeseran beroperasi ke arah yang berlawanan. Misalnya, LEFT_SHIFT (expr, -1) sama dengan RIGHT_SHIFT (expr, 1). Ketika shift_amount lebih besar dari jumlah bit dalam expression_value, hasil yang dikembalikan adalah 0.

RIGHT_SHIFT melakukan pergeseran logis. Setelah bit digeser, posisi kosong apa pun akan diisi oleh 0, terlepas dari apakah nilai aslinya positif atau negatif.

Keterangan

Dalam implementasi awal, fungsionalitas Kueri Terdistribusi untuk fungsi manipulasi bit dalam server tertaut atau kueri ad hoc (OPENQUERY) tidak akan didukung.

Metode >> untuk RIGHT_SHIFT fungsi saat ini tidak didukung di Microsoft Fabric.

Contoh

Dalam contoh berikut, nilai bilangan bulat 12345 digeser kanan oleh 5 bit.

SELECT RIGHT_SHIFT(12345, 5);

Hasilnya adalah 385. Jika Anda mengonversi 12345 ke biner, Anda memiliki 0011 0000 0011 1001. Menggeser 0001 1000 0001ini ke kanan oleh 5 menjadi , yang dalam 385 desimal.

Tabel berikut menunjukkan apa yang terjadi selama setiap shift.

Nilai bilangan bulat Nilai biner Deskripsi
12345 0011 0000 0011 1001 Nilai awal
6172 0001 1000 0001 1100 Geser ke kanan dengan 1
3086 0000 1100 0000 1110 Geser ke kanan dengan 2
1543 0000 0110 0000 0111 Geser ke kanan dengan 3
771 0000 0011 0000 0011 Geser ke kanan dengan 4
385 0000 0001 1000 0001 Geser ke kanan dengan 5

Baca juga