sql >> データベース >  >> RDS >> Sqlserver

SQL ServerのWHERE句のアンパサンド(&)演算子

    &はビット単位の論理演算子です-2つの整数値に対して演算を実行します。

    WHERE (sc.Attributes & 1) = 0 
    

    上記のコードは、sc.Attributesが偶数かどうかを確認します。これは、最初のビットが設定されていないということと同じです。

    ただし、列の名前が「属性」であるため、「1」の値は、外部的な意味を持つ単なるフラグである可能性があります。

    属性の番号に格納されているフラグごとに1桁の2進数を使用するのが一般的です。したがって、最初のビットをテストするにはsc.Attributes&1を使用し、2番目のビットをテストするにはsc.Attributes&2を使用し、3番目のビットをテストするにはsc.Attributes&4を使用し、4番目のビットをテストするにはsc.Attributes&8を使用します...

    =0の部分は、最初のビットが設定されていないかどうかをテストしています。

    いくつかのバイナリの例:(==操作の結果を表示するため)

    //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. 仮想列と機能インデックス

    2. ORDER BY句は、ビュー、インライン関数、派生テーブル、サブクエリ、および一般的なテーブル式では無効です。

    3. SQLiteで2つの日付の差を計算する方法

    4. SQLiteの主キーを無視して重複行を見つける11の方法