<轉載>SQL 基礎知識梳理(六)- 函式、謂詞、CASE 表示式
【博主】反骨仔
【原文】http://www.cnblogs.com/liqingwen/p/5939796.html
目錄
- 函式
- 謂詞
- CASE 表示式
一、函式
1.函式:輸入某一值得到相應輸出結果的功能,輸入值稱為“引數”,輸出值稱為“返回值”。
2.函式的種類:
(1)算術函式 - 數值計算
(2)字串函式 - 字串操作
(3)日期函式 - 日期操作
(4)轉換函式 - 轉換資料型別
(5)聚合函式 - 資料聚合
3.算術函式(加、減、乘、除):+、-、*、/
【備註】資料型別 NUMBERIC(全體位數,小數位數)可以指定數值的大小。
初始化資料(1)ABS - 絕對值:不考慮數值的符號,表示一個數到原點距離的數值。
絕對值的計算方法:0 和正數的絕對值就是其本身,負數的絕對值就是去掉符號後的結果。
--語法: ABS(數值)
圖:第 2 行:-180 的絕對值為 180
(2)MOD - 取餘、求餘
--語法: MOD(被除數,除數)
【備註】Oracle、DB2、PostgreSQL、MySQL 支援該函式,而 SQL Server 不支援該函式,所以這裡用“%”代替。
(3)ROUND - 四捨五入
如果指定四捨五入的位數為 1,那麼會對小數點第 2 位進行四捨五入;如果指定位數為 2,那麼就會對第 3 位進行四捨五入。
4.字串函式
初始化資料(1)拼接:+
(2)LEN - 字串長度
--語法: LEN(字串)
(3)LOWER - 小寫轉換
--語法:LOWER(字串)
(4)REPLACE - 字串的替換
--語法:REPLACE(物件字串, 替換前的字串, 替換後的字串)
(5)SUBSTRING - 字串的擷取
--語法:SUBSTRING(物件字串,擷取的起始位置,擷取的字元數)
(6)UPPER - 大寫轉換
--語法:UPPER(字串)
5.日期函式
(1)獲取當前日期和時間:
(2)DATEPART - 擷取日期元素
6.轉換函式
(1)CAST - 型別轉換
(2)COALESCE - 將 NULL 轉換為其他值
作用:返回可變引數中左側開始的第一個不是 NULL 的值(引數是可變的,即可以個數是無限的)。
--語法:COALESCE(資料1, 資料2, 資料3 ...)
圖
圖
二、謂詞
1.謂詞:返回值為真值(TRUE/FALSE/UNKNOWN)的函式。
2.LIKE - 字串的部分一致查詢
【備註】= 運算子:字串完全一致。
初始化資料%:0 字元以上的任意字串。
_:任意 1 個字元。
圖:前部分一致
圖:中間一致
圖:後部分一致
後面 ddd 是 3 個字元,所以“abc__(2個 _)”不滿足條件。
3.BETWEEN - 範圍查詢
BETWEEN 會在結果中包含臨界值(100 和 1000)。如果不想包含臨界值可以使用 < 和 >。
4.IS NULL、IS NOT NULL - 判斷是否為 NULL
為了選取部分值為 NULL 的列的資料,不能使用 =,只能使用 IS NULL。
取反(不為空的資料),請使用 IS NOT NULL。
5.IN - OR 的簡便用法
用 IN 替換上述語句:
否定形式 NOT IN:
【備註】IN 和 NOT IN 是無法選取 NULL 資料的。
6.使用子查詢作為 IN 謂詞的引數
IN 和 NOT IN 謂詞具有其它謂詞沒有的用法,它的引數可以是子查詢。
測試資料圖
7.EXIST
很多時候基本上可以使用 IN 或 NOT IN 來代替該謂詞。
作用:判斷是否存在滿足某種條件的記錄。
NOT EXIST 與 EXIST 相反,不存在:
三、CASE 表示式
1.CASE 表示式:(條件)分歧。
2.語法
--語法 --CASE WHEN <判斷表示式> THEN <表示式> -- WHEN <判斷表示式> THEN <表示式> -- ... -- ELSE <表示式> --END
判斷表示式類似“鍵 = 值”的形式,返回值為真值(TRUE/FALSE/UNKNOW)的表示式。如果結果為真,就會返回 THEN 子句中的表示式;如果不為真,就跳轉到下一條 WHEN 子句的判斷中;如果到最後的 WHEN 子句都不為真,就執行最後一條 ELSE 的表示式。
下面是簡化版的 CASE 表示式:
3.行轉列