Partage via


LEFT_SHIFT (Transact SQL)

S’applique à : point de terminaison d’analyse SQL Server 2022 (16.x) Azure SQL Database Azure SQL Managed Instance SQL dans Microsoft Fabric Warehouse

LEFT_SHIFT prend deux paramètres et retourne le premier paramètre déplacé à gauche par le nombre de bits spécifiés dans le deuxième paramètre.

La fonction LEFT_SHIFT est également accessible via l’opérateur <<.

Conventions de la syntaxe Transact-SQL

Syntaxe

LEFT_SHIFT ( expression_value, shift_amount )
expression_value << shift_amount

Arguments

expression_value

Toute expression entière ou binaire qui n’est pas un Large Object (LOB).

shift_amount

Nombre de bits par lesquels expression_value doit être déplacé. shift_amount doit être de type entier.

Types de retour

Retourne le même type que expression_value.

Le paramètre shift_amount est casté en bigint. Le paramètre peut être positif ou négatif et peut également être supérieur au nombre de bits dans le type de données de expression_value. Lorsque shift_amount est négative, le déplacement fonctionne dans la direction opposée. Par exemple, LEFT_SHIFT (expr, -1) est identique à RIGHT_SHIFT (expr, 1). Lorsque shift_amount est supérieur au nombre de bits dans expression_value, le résultat retourné sera 0.

LEFT_SHIFT effectue un déplacement logique. Une fois les bits déplacés, toutes les positions vacantes seront remplies par 0, quelle que soit la valeur d’origine positive ou négative.

Remarques

Dans l’implémentation initiale, la fonctionnalité Requête distribuée pour les fonctions de manipulation de bits au sein de requêtes de serveur lié ou ad hoc (OPENQUERY) ne sera pas prise en charge.

La méthode << de la fonction LEFT_SHIFT n’est actuellement pas prise en charge dans Microsoft Fabric.

Exemples

Dans l’exemple suivant, la valeur de l’entier 12345 est déplacée à gauche de 5 bits.

SELECT LEFT_SHIFT(12345, 5);

Le résultat est 395040. Si vous convertissez 12345 en binaire, vous avez 0011 0000 0011 1001. Le déplacement à gauche de 5 devient 0110 0000 0111 0010 0000, qui est 395040 en décimale.

Le tableau suivant montre ce qui se passe pendant chaque déplacement.

Valeur entière Valeur binaire Description
12345 0011 0000 0011 1001 Valeur de départ
24690 0110 0000 0111 0010 Déplacer vers la gauche par 1
49380 1100 0000 1110 0100 Déplacer vers la gauche par 2
98760 0001 1000 0001 1100 1000 Déplacer vers la gauche par 3
et ouvrir à un nouvel octet
197520 0011 0000 0011 1001 0000 Déplacer vers la gauche par 4
395040 0110 0000 0111 0010 0000 Déplacer vers la gauche par 5

Voir aussi