2009-07-10 17 views
16

Veritabanımda bir bit maskesi alanı var. Genellikle C# kodu ile onu yönetmek ama şimdi T-SQL kullanarak maskeli biraz çevirmek gerekirT-SQL'de bit sayısı çevirme işlemleri

aşağıdaki başarmak nasıl:

istediğim biraz çevirmek için: 1 < < 8 (256)

Flip önce maske değeri: 143

I sonra maske değeri çevirmek: 399

Bu, T-SQL'de eksik olan bit operatörleri olmadan yapılabilir, değil mi?

cevap

25

Kullanım XOR: siz de üs geçmek istiyorsanız

SELECT value^256 

Yani sizin durumda, SELECT 143^256 aslında 399. döndürür:

SELECT value^POWER(2, power) 
+0

teşekkürler! Sorunumu çözdü! Ayrıca biraz zarif bir şekilde açmak için bir yolu var mı? (ben zaten yaptım, ama çirkin görünüyor ...) –

+2

Çevirmek veya açmak için mi arıyorsunuz? Çevir - kullanın XOR (^); açmak - OR (|) kullanın. Daha fazla şıklık istiyorsanız, kullanıcı tanımlı bir işlev olarak adlandırın. :) –

20

Tsql Bit operatörleri bulunabilir here ve bunları kullanmak için iyi makale here

+1

Soru bit kaymasıyla ilgili, gönderdiğiniz makalelerin – Edwin

+3

ile ilgisi yok. Soru, bit kaydırması hakkında değil, bit FLIPPING hakkında. –

+0

Başlık, bit kaymasıyla ilgili yanlış bir şeydir, ancak bitin çevrilmesiyle ilgili asıl soru. – DaveBoltman