sql >> Database teknologi >  >> RDS >> Sqlserver

usigneret højreskift '>>>' Operatør i sql-server

T-SQL har ingen bit-shift-operatorer, så du bliver nødt til at implementere en selv. Der er en implementering af bitvise skift her:http ://dataeducation.com/bitmask-handling-part-4-left-shift-and-right-shift/

Du bliver nødt til at caste dit heltal til en varbinær, bruge den bitvise skiftfunktion og caste tilbage til heltal og (forhåbentlig) hey-presto! Der er dit resultat, du forventer.

Implementering og test efterlades som en øvelse for læseren...

Rediger - For at prøve at præcisere, hvad jeg har skrevet i kommentarerne nedenfor, vil udførelse af denne SQL demonstrere de forskellige resultater givet af de forskellige CAST'er:

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

Resultater:

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. Fejl ved opsætning af indledende lager i Pentaho Kettle

  2. Kapacitetsplanlægning ved hjælp af ydeevnedata

  3. IntegrityError duplikatnøgleværdi overtræder unik begrænsning - django/postgres

  4. Kan jeg bruge Postgres-funktionerne til at finde punkter inde i et roterende rektangel af fast størrelse?