首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2000 運算子完整指南

     編輯:關於SqlServer

Transact-SQL 運算子分類與應用詳解

SQL Server 2000 提供豐富的運算子支援資料運算、邏輯判斷與位元操作,是撰寫高效存儲程序與查詢的基礎。本文系統整理各類運算子語法、優先序與實戰技巧。

1. 算術運算子

支援標準數學運算,適用於所有數值資料類型(int、decimal、float、money 等):

運算子功能範例結果
+加法10 + 515
-減法/負號10 - 5 / -55 / -5
*乘法10 * 550
/除法10 / 33 (整數除法)
%模數 (餘數)10 % 31

注意:整數除法會截斷小數位,需轉型為 CAST(10 AS DECIMAL(10,2)) / 3 獲得精確結果。運算子優先序:* / % 高於 + -。

2. 指派運算子

唯一的指派運算子 = 用於變數賦值與欄位更新:

-- 變數宣告與指派
DECLARE @Counter INT;
SET @Counter = 1;           -- 標準語法
SELECT @Counter = 1;        -- 替代語法

-- 累加操作
SET @Counter = @Counter + 1;
-- 或簡寫 (僅限 SET)
SET @Counter += 1;          -- SQL Server 2008+ 支援

在 UPDATE 陳述式中:SET Price = Price * 1.1 即為就地更新運算。

3. 位元運算子

適用於整數類型,進行二進位層級操作,常用於旗標儲存、權限位遮罩:

運算子名稱說明範例 (二進位)
&位元 AND兩位皆為 1 結果為 15 & 3 = 1 (101 & 011 = 001)
|位元 OR任一位為 1 結果為 15 | 3 = 7 (101 | 011 = 111)
^位元 XOR兩位不同結果為 15 ^ 3 = 6 (101 ^ 011 = 110)
~位元 NOT逐位取反~5 = -6 (補數表示)

實戰範例:權限位遮罩設計

-- 定義權限常數
DECLARE @READ INT = 1;      -- 0001
DECLARE @WRITE INT = 2;     -- 0010
DECLARE @EXECUTE INT = 4;   -- 0100
DECLARE @ADMIN INT = 8;     -- 1000

-- 使用者擁有讀寫權限
DECLARE @UserPerm INT = @READ | @WRITE;  -- 0011 = 3

-- 檢查是否有寫入權限
IF (@UserPerm & @WRITE) = @WRITE
    PRINT '允許寫入';

-- 移除執行權限
SET @UserPerm = @UserPerm & ~@EXECUTE;

4. 比較運算子

標準 SQL 比較運算,回傳布林值:

  • = 等於、<> / != 不等於
  • >、>=、<、<=
  • !> 不大於、!< 不小於 (T-SQL 擴充)

5. 邏輯運算子

6. 運算子優先序總表 (高到低)

  1. ~ (位元 NOT)
  2. * / % (乘除模)
  3. + - (正負號、加減)
  4. = > < >= <= <> != !> !< (比較)
  5. ^ (位元 XOR)
  6. & (位元 AND)
  7. | (位元 OR)
  8. NOT (邏輯否定)
  9. AND (邏輯 AND)
  10. ALL ANY BETWEEN IN LIKE OR SOME (邏輯)
  11. = (指派)

最佳實踐:複雜表達式務必使用括號明確分組,避免優先序導致邏輯錯誤。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
運算子功能真值表
ALL子查詢所有值滿足條件子查詢為空回傳 TRUE
AND邏輯 ANDTRUE AND TRUE = TRUE
ANY / SOME子查詢任一值滿足條件子查詢為空回傳 FALSE
BETWEEN範圍檢查 (含界)x BETWEEN a AND b
EXISTS子查詢是否回傳資料列有資料列 = TRUE
IN清單成員檢查值在清單中 = TRUE
LIKE模式比對支援 % _ [範圍] 萬用字元
NOT邏輯否定反轉布林值
OR邏輯 ORTRUE OR FALSE = TRUE