- SQL Server 2016從入門到精通(視頻教學超值版)
- 王英英
- 1973字
- 2019-12-06 15:49:25
4.5 運算符和表達式
運算符是一些符號,它們能夠用于執行算術運算、字符串連接、賦值以及在字段、常量和變量之間進行比較。在SQL Server 2016中,運算符主要有以下5大類:算術運算符、比較運算符、邏輯運算符、連接運算符以及按位運算符。表達式在SQL Server 2016中也有非常重要的作用,SQL語言中的許多重要操作也都需要使用表達式來完成,本節將介紹各類運算符的用法和有關表達式的詳細信息。
4.5.1 算術運算符
算術運算符可以在兩個表達式上執行數學運算,這兩個表達式可以是任何數值數據類型。Transact-SQL中的算術運算符如表4-3所示。
表4-3 Transact-SQL中的算術運算符

加法和減法運算符也可以對datetime和smalldatetime類型的數據執行算術運算。求余運算即返回一個除法運算的整數余數,例如表達式14%3的結果等于2。
4.5.2 比較運算符
比較運算符用來比較兩個表達式的大小,表達式可以是字符、數字或日期數據,其比較結果是布爾值。
比較運算符測試兩個表達式是否相同。除了text、ntext或image數據類型的表達式外,比較運算符可以用于所有的表達式。表4-4列出了Transact-SQL中的比較運算符。
表4-4 Transact-SQL中的比較運算符

4.5.3 邏輯運算符
邏輯運算符可以把多個邏輯表達式連接起來測試,以獲得其真實情況。返回帶有TRUE、FALSE或UNKNOWN值的Boolean數據類型。Transact-SQL中包含如下一些邏輯運算符:
- ALL:如果一組的比較都為TRUE,那么就為TRUE。
- AND:如果兩個布爾表達式都為TRUE,那么就為TRUE。
- ANY:如果一組的比較中任何一個為TRUE,那么就為TRUE。
- BETWEEN:如果操作數在某個范圍之內,那么就為TRUE。
- EXISTS:如果子查詢包含一些行,那么就為TRUE。
- IN:如果操作數等于表達式列表中的一個,那么就為TRUE。
- LIKE:如果操作數與一種模式相匹配,那么就為TRUE。
- NOT:對任何其他布爾運算符的值取反。
- OR:如果兩個布爾表達式中的一個為TRUE,那么就為TRUE。
- SOME:如果在一組比較中,有些為TRUE,那么就為TRUE。
4.5.4 連接運算符
加號(+)是字符串串聯運算符,可以將兩個或兩個以上字符串合并成一個字符串。其他所有字符串操作都使用字符串函數(如SUBSTRING)進行處理。
默認情況下,對于varchar數據類型的數據,在INSERT或賦值語句中,空的字符串將被解釋為空字符串。在串聯varchar、char或text數據類型的數據時,空的字符串被解釋為空字符串。例如,'abc' + '' + 'def'被存儲為'abcdef'。
4.5.5 按位運算符
按位運算符在兩個表達式之間執行位操作,這兩個表達式可以為整數數據類型類別中的任何數據類型。Transact-SQL中的按位運算符如表4-5所示。
表4-5 按位運算符

4.5.6 運算符的優先級
當一個復雜的表達式有多個運算符時,運算符優先級決定執行運算的先后次序。執行的順序可能嚴重地影響所得到的值。
運算符的優先級如表4-6所示。在較低級別的運算符之前先對較高級別的運算符進行求值,表4-6按運算符從高到低的順序列出了SQL Server中的運算符優先級別。
表4-6 SQL Server運算符的優先級

當一個表達式中的兩個運算符有相同的運算符優先級別時,將按照它們在表達式中的位置對其從左到右進行求值。當然,在無法確定優先級的情況下,可以使用圓括號()來改變優先級,并且這樣會使計算過程更加清晰。
4.5.7 什么是表達式
表達式是指用運算符和圓括號把變量、常量和函數等運算成分連接起來的有意義的式子,即使單個的常量、變量和函數也可以看成是一個表達式。表達式有多方面的用途,如執行計算、提供查詢記錄條件等。
4.5.8 Transact-SQL表達式的分類
根據連接表達式的運算符進行分類,可以將表達式分為算術表達式、比較表達式、邏輯表達式、按位表達式和混合表達式等;根據表達式的作用進行分類,可以將表達式分為字段名表達式、目標表達式和條件表達式。
1.字段名表達式
字段名表達式可以是單一的字段名或幾個字段的組合,還可以是由字段、作用于字段的集合函數和常量的任意算術運算(+、-、*、/)組成的運算表達式。主要包括數值表達式、字符表達式、邏輯表達式和日期表達式4種。
2.目標表達式
目標表達式有4種構成方式。
(1)*:表示選擇相應基表和視圖的所有字段。
(2)<表名>.*:表示選擇指定的基表和視圖的所有字段。
(3)集函數():表示在相應的表中按集函數操作和運算。
(4)[<表名>.]字段名表達式[,[<表名>.]<字段名表達式>]……:表示按字段名表達式在多個指定的表中選擇。
3.條件表達式
常用的條件表達式有以下6種。
(1)比較大小:應用比較運算符構成表達式,主要的比較運算符有“=”“>”“>=”“<”“<=”“!=”“<>”“!>”(不大于)“!<”(不小于)NOT(與比較運算符相同,對條件求非)。
(2)指定范圍:(NOT)BETWEEN…AND…運算符查找字段值在或者不在指定范圍內的記錄。BETWEEN后面指定范圍的最小值,AND后面指定范圍的最大值。
(3)集合(NOT)IN:查詢字段值屬于或者不屬于指定集合內的記錄。
(4)字符匹配:(NOT)LIKE ‘<匹配字符串>’[ESCAPE ‘<換碼字符>’]查找字段值滿足或不滿足<匹配字符串>中指定的匹配條件的記錄。<匹配字符串>可以是一個完整的字符串,也可以包含通配符“_”和“%”,“_”代表任意單個字符,“%”代表任意長度的字符串。
(5)空值IS(NOT)NULL:查找字段值為空(不為空)的記錄。NULL不能用來表示無形值、默認值、不可用值、以及取最低值或取最高值。SQL規定,在含有運算符“+”“-”“*”“/”的算術表達式中,若有一個值是空值,則該算術表達式的值也是空值;任何一個含有NULL比較操作結果的取值都為FALSE。
(6)多重條件AND和OR:AND表達式用來查找字段值同時滿足AND相連接的查詢條件的記錄。OR表達式用來查詢字段值滿足OR連接的查詢條件中任意一個的記錄。AND運算符的優先級高于OR運算符。
- Web前端開發技術:HTML、CSS、JavaScript(第3版)
- Python快樂編程:人工智能深度學習基礎
- JavaScript 從入門到項目實踐(超值版)
- Redis Applied Design Patterns
- 華為HMS生態與應用開發實戰
- Learning AndEngine
- 深入RabbitMQ
- Oracle Exadata專家手冊
- Mastering Business Intelligence with MicroStrategy
- Swift 4 Protocol-Oriented Programming(Third Edition)
- JavaScript程序設計(第2版)
- 零基礎學Scratch 3.0編程
- Visual Basic程序設計全程指南
- Practical Maya Programming with Python
- 程序員必會的40種算法