& (位 AND) (Transact-SQL)
適用於:sql Server
Azure SQL 資料庫
Azure SQL 受控執行個體
azure Synapse Analytics
Platform System (PDW)
SQL 分析端點在 Microsoft Fabric
中Microsoft網狀架構倉儲中的 SQL 分析端點
在兩個整數值之間,執行位元邏輯 AND 運算。
Syntax
expression & expression
注意
若要檢視 SQL Server 2014 (12.x) 和更早版本的 Transact-SQL 語法,請參閱舊版文件。
引數
expression
這是整數資料類型類別目錄之任何資料類型,或是 bit、binary 或 varbinary 資料類型的任何有效運算式。 expression 會被視為適用於位元運算的二進位數字。
注意
在位元運算中,只能有一個 expression 是 binary 或 varbinary 資料類型。
結果類型
如果輸入值為 int,則為 int。
如果輸入值為 smallint,則為 smallint。
如果輸入值為 tinyint 或 bit,則為 tinyint。
備註
& 位運算子會在兩個表達式之間執行位邏輯 AND,並針對這兩個運算式取得每個對應的位。 只有在輸入運算式的兩個位元 (針對目前所解析的位元) 的值都是 1 時,結果中的兩個位元才會都設為 1;否則,結果中的位元便設為 0。
如果左右運算式的整數資料類型不同 (例如,左邊的 expression 是 smallint,而右邊的 expression 是 int),就會將較小資料類型的引數轉換為較大的資料類型。 在此情況下, smallint 運算式 會 轉換成 int。
範例
下列範例會使用 int 資料類型建立資料表來儲存值,並在單一資料列中插入兩個值。
CREATE TABLE bitwise (
a_int_value INT NOT NULL,
b_int_value INT NOT NULL);
GO
INSERT bitwise VALUES (170, 75);
GO
這個查詢在 a_int_value
和 b_int_value
資料行之間執行位元 AND 運算。
SELECT a_int_value & b_int_value
FROM bitwise;
GO
以下為結果集:
-----------
10
(1 row(s) affected)
170 (a_int_value
或 A
) 的二進位表示法是 0000 0000 1010 1010
。 75 (b_int_value
或 B
) 的二進位表示法是 0000 0000 0100 1011
。 對這兩個值執行位元 AND 運算,會產生二進位結果 0000 0000 0000 1010
,也就是十進位的 10。
(A & B)
0000 0000 1010 1010
0000 0000 0100 1011
-------------------
0000 0000 0000 1010
另請參閱
運算式 (Transact-SQL)
運算子 (Transact-SQL)
位元運算子 (Transact-SQL)
&= (位 AND 指派) (Transact-SQL)
複合運算子 (Transact-SQL)