sql >> Databasteknik >  >> RDS >> Sqlserver

Ampersand (&) operator i en SQL Server WHERE-klausul

&är den bitvisa logiken och operatorn - Den utför operationen på 2 heltalsvärden.

WHERE (sc.Attributes & 1) = 0 

Ovanstående kod kontrollerar om sc.Attributes är ett jämnt tal. Vilket är samma sak som att säga att den första biten inte är inställd.

På grund av namnet på kolumnen dock:"Attribut", så är "1"-värdet förmodligen bara någon flagga som har någon yttre betydelse.

Det är vanligt att använda 1 binär siffra för varje flagga som lagras i ett nummer för attribut. Så för att testa för den första biten använder du sc.Attributes&1, för att testa för den andra använder du sc.Attributes&2, för att testa för den tredje använder du sc.Attributes&4, för att testa för den fjärde använder du sc.Attributes&8, ...

Delen =0 testar för att se om den första biten INTE är inställd.

Några binära exempel:(==för att visa resultatet av operationen)

//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. 3 metoder för att ansluta MDF-fil till SQL Server

  2. ladda dataspinner från sqlite och mysql

  3. MySQL välj koordinater inom räckvidd

  4. ODP.NET Oracle.ManagedDataAccess orsakar ORA-12537 nätverkssession slutet av filen