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 |