1. 程式人生 > 其它 ><轉載>SQL 基礎知識梳理(六)- 函式、謂詞、CASE 表示式

<轉載>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.行轉列