Sql Server系列:運算子和表示式

libingql發表於2014-11-14

  運算子的一些符號,他們能夠用於執行算術運算、字串連線、賦值以及在欄位、常量和變數之間進行比較。在SQL Server 2012中,運算子主要由以下6大類:算術運算子、賦值運算子、比較運算子、邏輯運算子、連線運算子以及按位運算子。

1. 運算子

1.1> 算術運算子

  算術運算子可以在兩個表示式上執行數學運算,這兩個表示式可以是任何數值資料型別。

運算子作用
+ 加法運算
- 減法運算
* 乘法運算
/ 除法運算,返回商
% 求餘運算,返回餘數

1.2> 比較運算子

  比較運算子用來比較兩個表示式的大小,表示式可以是字元、數字或日期資料,其比較結果是Boolean值。

運算子含義
= 等於
> 大於
< 小於
>= 大於等於
<= 小於等於
<> 不等於

1.3> 邏輯運算子

  邏輯運算子可以把多個邏輯表示式連線起來測試,以獲得其真實情況。返回帶有TRUE、FALSE或UNKNOWN的Boolean資料型別。

運算子含義
ALL 如果一組的比較都為TRUE,則返回TRUE。
AND 如果兩個布林表示式都為TRUE,則返回TRUE。
ANY 如果一組的比較中任何一個為TRUE,則返回TRUE。
>BETWEEN 如果運算元在某個範圍之內,則返回TRUE。
EXISTS 如果子查詢包含一些行,則返回TRUE。
IN 如果運算元等於表示式列表中的一個,則返回TRUE。
LIKE 如果運算元與一種模式相匹配,則返回TRUE。
NOT 對任何其他布林運算子的值取反。
OR 如果兩個布林表示式中的一個為TRUE,則返回TRUE。
SOME 如果在一組比較中,有些為TRUE,則返回TRUE。

1.4> 連線運算子

  加號(+)是字串串聯運算子,可以將兩個或兩個以上字串合併成一個字串。

1.5> 按位運算子

  按位運算子在兩個表示式之間執行位操作,這兩個表示式可以為整數資料型別中的任何資料型別。

運算子含義
& 位與
| 位或
^ 位異或
~ 數字非

2. 表示式

  根據連線表示式的運算子進行分類,可以將表示式分為算術表示式、比較表示式、邏輯表示式、按位表示式和混合表示式等;根據表示式的作用進行分類,可以將表示式分為欄位名錶達式、目標表示式和條件表示式。

2.1> 欄位名錶達式

  欄位名錶達式可以是單一的欄位名或幾個欄位的組合,還可以是由欄位、作用於欄位的集合函式和常量的任意算術組成的運算表示式。主要包括數值表示式、字元表示式、邏輯表示式和日期表示式。

2.2> 目標表示式

  目標表示式有4中構成方式:

  (1)*:表示選擇相應基表和檢視的所有欄位。

  (2)<表名>.:表示選擇指定的基表和檢視的所有欄位。

  (3)集函式():表示在相應的表中按集函式操作和運算。

  (4)[<表名>.]欄位名錶達式[,[<表名>.]<欄位名錶達式>]...:表示按欄位名錶達式在多個指定的表中選擇。

2.3> 條件表示式

  常用的條件表示式有以下6種:

  (1)比較大小——應用比較運算子構成表示式。

  (2)指定範圍——(NOT)BETWEEN...AND...運算子查詢欄位值在或者不在指定範圍內的記錄。BETWEEN後面指定範圍的最小值,AND指定範圍的最大值。

  (3)集合(NOT)IN——查詢欄位值屬於或不屬於指定集合內的記錄。

  (4)字元匹配——(NOT)LIKE查詢欄位值滿足匹配字串中指定的匹配條件的記錄。匹配字串可以是一個完整的字串,也可以包含萬用字元“_”和“%”,“_”表示任意單個字元,"%"表示任意長度的字串。

  (5)空值IS(NOT) NULL——查詢欄位值(不)為空的記錄。

  (6)多重條件AND和OR。AND表示式用來查詢欄位值同時滿足AND相連線的查詢條件的記錄。OR表示式用來查詢欄位值滿足OR連線的查詢條件中的任意一個的記錄。AND運算子的優先順序高於OR運算子。

相關文章