LEFT_SHIFT (Transact SQL)
Berlaku untuk: Titik akhir analitik SQL Server 2022 (16.x) Azure SQL Database Azure SQL Managed Instance SQL di Microsoft Fabric Warehouse di Microsoft Fabric
LEFT_SHIFT mengambil dua parameter, dan mengembalikan parameter pertama yang digeser bit ke kiri oleh jumlah bit yang ditentukan dalam parameter kedua.
Fungsi LEFT_SHIFT juga dapat diakses melalui <<
operator.
Sintaks
LEFT_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
.
LEFT_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 LEFT_SHIFT
fungsi saat ini tidak didukung di Microsoft Fabric.
Contoh
Dalam contoh berikut, nilai bilangan bulat 12345 digeser kiri oleh 5 bit.
SELECT LEFT_SHIFT(12345, 5);
Hasilnya adalah 395040. Jika Anda mengonversi 12345 ke biner, Anda memiliki 0011 0000 0011 1001
. Menggeser 0110 0000 0111 0010 0000
ini ke kiri oleh 5 menjadi , yang dalam 395040
desimal.
Tabel berikut menunjukkan apa yang terjadi selama setiap shift.
Nilai bilangan bulat | Nilai biner | Deskripsi |
---|---|---|
12345 | 0011 0000 0011 1001 |
Nilai awal |
24690 | 0110 0000 0111 0010 |
Geser ke kiri 1 |
49380 | 1100 0000 1110 0100 |
Geser ke kiri 2 |
98760 | 0001 1000 0001 1100 1000 |
Geser ke kiri 3, dan buka ke byte baru |
197520 | 0011 0000 0011 1001 0000 |
Geser ke kiri 4 |
395040 | 0110 0000 0111 0010 0000 |
Geser ke kiri 5 |