T-SQL không có toán tử dịch chuyển bit, vì vậy bạn phải tự triển khai một toán tử. Có một cách triển khai thay đổi một chút ở đây: http ://dataeducation.com/bitmask-handling-part-4-left-shift-and-right-shift/
Bạn sẽ phải truyền số nguyên của mình sang một varbinary, sử dụng hàm chuyển bitwise và truyền trở lại số nguyên và (hy vọng) hey-presto! Có kết quả mà bạn mong đợi.
Việc triển khai và thử nghiệm được để lại như một bài tập cho người đọc ...
Chỉnh sửa - Để cố gắng làm rõ những gì tôi đã đưa ra trong các nhận xét bên dưới, việc thực thi SQL này sẽ chứng minh các kết quả khác nhau được đưa ra bởi các CAST khác nhau:
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
Kết quả:
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