sql >> Databáze >  >> RDS >> Sqlserver

unsigned right shift '>>>' Operátor na sql serveru

T-SQL nemá žádné operátory bitového posunu, takže byste je museli implementovat sami. Zde je implementace bitových posunů:http ://dataeducation.com/bitmask-handling-part-4-left-shift-and-right-shift/

Museli byste přehodit celé číslo na varbinary, použít funkci bitového posunu a přehodit zpět na celé číslo a (doufejme) hej-presto! Zde je váš výsledek, který očekáváte.

Implementace a testování je ponecháno jako cvičení pro čtenáře...

Upravit – Abychom se pokusili objasnit, co jsem vložil do komentářů níže, spuštění tohoto SQL předvede různé výsledky dané různými CASTy:

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
 

Výsledky:

---pre>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. Odkazování na tabulky vnějších dotazů v poddotazu

  2. obsah binárního souboru zobrazený v php print_r, ale neuložený v mysql

  3. ON DELETE SET NULL v postgres

  4. SQL dotaz pro vyhledávání podle dne/měsíce/roku/dne&měsíce/dne&roku atd