sql >> Database >  >> RDS >> Sqlserver

unsigned right shift '>>>' Operator in sql server

T-SQL heeft geen bit-shift-operators, dus je zou er zelf een moeten implementeren. Er is een implementatie van bitsgewijze verschuivingen hier:http ://dataeducation.com/bitmask-handling-part-4-left-shift-and-right-shift/

Je zou je integer naar een varbinary moeten casten, de bitwise shift-functie moeten gebruiken en terug moeten casten naar integer en (hopelijk) hey-presto! Daar is je resultaat dat je verwacht.

Implementatie en testen wordt overgelaten als een oefening voor de lezer...

Bewerken - Om te proberen te verduidelijken wat ik in de onderstaande opmerkingen heb geplaatst, zal het uitvoeren van deze SQL de verschillende resultaten demonstreren die door de verschillende CAST's worden gegeven:

SELECT -5381 AS Signed_Integer,
        cast(-5381 AS varbinary) AS Binary_Representation_of_Signed_Integer,
        cast(cast(-5381 AS bigint) AS varbinary) AS Binary_Representation_of_Signed_Big_Integer, 
        cast(cast(-5381 AS varbinary) AS bigint) AS Signed_Integer_Transposed_onto_Big_Integer, 
        cast(cast(cast(-5381 AS varbinary) AS bigint) AS varbinary) AS Binary_Representation_of_Signed_Integer_Trasposed_onto_Big_Integer

Resultaten:

Signed_Integer Binary_Representation_of_Signed_Integer                        Binary_Representation_of_Signed_Big_Integer                    Signed_Integer_Transposed_onto_Big_Integer Binary_Representation_of_Signed_Integer_Trasposed_onto_Big_Integer
-------------- -------------------------------------------------------------- -------------------------------------------------------------- ------------------------------------------ ------------------------------------------------------------------
-5381          0xFFFFEAFB                                                     0xFFFFFFFFFFFFEAFB                                             4294961915                                 0x00000000FFFFEAFB


  1. Hoe schakel ik het MySQL-log met trage query's in?

  2. alle records uit de ene tabel weergeven en records uit een andere matchen

  3. Optimalisatiefasen en gemiste kansen

  4. DateTime (UTC) opslaan versus DateTimeOffset opslaan