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

Operátor ampersand (&) v klauzuli WHERE serveru SQL Server

&je bitový logický operátor a - Provádí operaci na 2 celočíselných hodnotách.

WHERE (sc.Attributes & 1) = 0 

Výše uvedený kód kontroluje, zda je sc.Attributes sudé číslo. Což je stejné, jako když řeknete, že první bit není nastaven.

Ale kvůli názvu sloupce:"Atributy", je hodnota "1" pravděpodobně jen nějaký příznak, který má nějaký vnější význam.

Je běžné používat 1 binární číslici pro každý příznak uložený v čísle pro atributy. Takže k testování prvního bitu použijete sc.Attributes&1, k testování druhého použijte sc.Attributes&2, k testování třetího použijte sc.Attributes&4, k testování čtvrtého použijte sc.Attributes&8, ...

Část =0 testuje, zda NENÍ nastaven první bit.

Některé binární příklady:(==pro zobrazení výsledku operace)

//Check if the first bit is set, same as sc.Attributes&1
11111111 & 00000001 == 1
11111110 & 00000001 == 0
00000001 & 00000001 == 1


//Check if the third bit is set, same as sc.Attributes&4
11111111 & 00000100 == 1
11111011 & 00000100 == 0
00000100 & 00000100 == 1


  1. Ukládání datových bloků

  2. Jak vytvořit pole v PostgreSQL

  3. O dopadu celostránkových zápisů

  4. ORA-20008:Vypršel časový limit