1.1 條件函數列表

SQL 語言有一個函數列表,有點類似於Javaif-else中的運算符switch

總共有4個這樣的函數:

功能 描述
1個 案件 模擬開關
2個 如果() 三元運算符或 if-else 的類似物
3個 空值() if-else 的類似物
4個 無效() if-else 的類似物

SQL中的後三者都是函數表示,CASE是一個成熟的運算符,所以我們在最後單獨考慮。

1.2 IF()函數

SQL 中的函數IF()有點類似於 Java 中的三元運算符。在 SQL 語言中,它有 3 個參數,如下所示:

IF (condition, true, false)

必須將三個表達式傳遞給函數IF

  • 一個經過驗證的條件;
  • 條件為真時返回的表達式;
  • 條件為假時返回的表達式。

下面我將給出一些例子,以便更容易理解它是如何工作的:

要求 結果
1個 選擇 IF( 1>2 , 2, 3) 3個
2個 選擇 IF( 1<2 , '是', '否') '是的'
3個 選擇 IF( STRCMP('test','test1' ), 'no', 'yes') '不'

1.3 函數 IFNULL() 和 NULLIF()

該函數還有兩個修改IF()

第一個修改是函數IFNULL()。它只需要兩個值:

IFNULL (expression 1, expression 2)

如果expression1不等於NULL,則函數將返回expression1。如果是expression1 IS NULL,那麼該函數將返回expression2。本質是在字段等於時代入默認值NULL

函數的第二個修改IF是 function NULLIF(),它也有兩個值:

NULLIF (expression 1, expression 2)

它以相反的方向工作:

  • 如果expression1等於expression2,則函數返回NULL
  • 如果表達式不相等,則返回表達式 1