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。