LEFT_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

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.

Konvensi sintaks transact-SQL

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 0000ini 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

Baca juga