變量聲明與賦值
-- 聲明格式
DECLARE @Var1 DataType, @Var2 DataType, ...;
-- 賦值:SELECT 或 SET(推薦 SET 單變量,SELECT 多變量)
DECLARE @Var1 INT, @Var2 MONEY;
SELECT @Var1 = 100, @Var2 = 27.95;
-- 或
SET @Var1 = 100;
SET @Var2 = 27.95;
-- 讀取
SELECT @Var1, @Var2;
運算符分類與優先級表(高到低)
| 優先級 | 類別 | 運算符 | 結合性 | 說明 |
| 1 (最高) | 括號 | () | 左到右 | 強制分組,改變默認順序 |
| 2 | 一元取反 | ~ | 右到左 | 位取反 (BITWISE NOT) |
| 3 | 算術 | *, /, % | 左到右 | 乘、除、取模 |
| 4 | 位異或 | ^ | 左到右 | BITWISE XOR |
| 5 | 位或 | | | 左到右 | BITWISE OR |
| 6 | 位與 | & | 左到右 | BITWISE AND |
| 7 | 比較 | =, >, <, >=, <=, <> | 左到右 | 返回布爾值 |
| 8 | 邏輯非 | NOT | 右到左 | 邏輯取反 |
| 9 | 邏輯與 | AND | 左到右 | 邏輯合取 |
| 10 (最低) | 邏輯或 | OR | 左到右 | 邏輯析取 |
關鍵運算符詳細說明
算術運算符
+ - * / %:標準四則運算與取模。% 僅適用整數類型,MONEY/SMALLMONEY 不支持取模。
位運算符
& | ^ ~:按位與、或、異或、取反。僅適用整數類型 (INT, BIGINT, SMALLINT, TINYINT, BIT),常用於位掩碼標誌位操作。
比較運算符
= > < >= <= <>:標準比較,返回 TRUE/FALSE/UNKNOWN (NULL 參與時)。
字符串運算符
+:字符串連接。'abc' + '123' = 'abc123'。注意:任一操作數為 NULL,結果為 NULL(除非 CONCAT_NULL_YIELDS_NULL OFF)。
邏輯運算符優先級陷阱
-- 等價於 WHERE (A = 1 AND B = 2) OR C = 3
WHERE A = 1 AND B = 2 OR C = 3
-- 明確分組避免歧義
WHERE (A = 1 AND B = 2) OR C = 3
WHERE A = 1 AND (B = 2 OR C = 3)
實戰建議
- 複雜表達式**務必加括號**,代碼可讀性 > 依賴優先級記憶。
- 位運算優先級低於算術,
a + b & c 等價 (a + b) & c,非 a + (b & c)。
- 字符串連接
+ 與算術 + 同符號,類型上下文決定語義,混合使用加括號區分。