“MySQL 函数和运算符:控制流函数”的版本间差异
跳到导航
跳到搜索
(建立内容为“category:MySQL 控制流函数: {| class="wikitable" ! Option Name !! Description !! Introduced !! Deprecated |- | CASE || Case 运算符 |- | IF() || if/e…”的新页面) |
小无编辑摘要 |
||
(未显示同一用户的1个中间版本) | |||
第1行: | 第1行: | ||
[[category: | [[category:MySQL文档]] | ||
控制流函数: | 控制流函数: | ||
{| class="wikitable" | {| class="wikitable" | ||
! Option Name !! Description | ! Option Name !! Description | ||
|- | |- | ||
| CASE || Case 运算符 | | CASE || Case 运算符 | ||
第15行: | 第15行: | ||
“'''CASE WHEN THEN ELSE END'''”的两种形式: | |||
# “CASE '''value''' WHEN '''[compare_value]''' THEN result [WHEN [compare_value] THEN result ...] [ELSE result] END” | # “CASE '''value''' WHEN '''[compare_value]''' THEN result [WHEN [compare_value] THEN result ...] [ELSE result] END” | ||
# “CASE WHEN '''[condition]''' THEN result [WHEN [condition] THEN result ...] [ELSE result] END” | # “CASE WHEN '''[condition]''' THEN result [WHEN [condition] THEN result ...] [ELSE result] END” |
2023年3月31日 (五) 23:09的最新版本
控制流函数:
Option Name | Description |
---|---|
CASE | Case 运算符 |
IF() | if/else 构造 |
IFNULL() | 空 if/else 构造 |
NULLIF() | 如果 expr1 = expr2,则返回 NULL |
“CASE WHEN THEN ELSE END”的两种形式:
- “CASE value WHEN [compare_value] THEN result [WHEN [compare_value] THEN result ...] [ELSE result] END”
- “CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END”
- CASE语句不能包含ELSE NULL子句,并且以“END CASE”而不是“END”终止。
示例:
mysql> SELECT CASE 1 WHEN 1 THEN 'one'
-> WHEN 2 THEN 'two' ELSE 'more' END;
-> 'one'
mysql> SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END;
-> 'true'
mysql> SELECT CASE BINARY 'B'
-> WHEN 'a' THEN 1 WHEN 'b' THEN 2 END;
-> NULL
“IF(expr1,expr2,expr3)”:如果“expr1”是“TRUE”(expr1<>0 和 expr1<>NULL),则返回“expr2”,否则返回“expr3”。
- 如果“expr2”或“expr3”中只有一个是显式 NULL,则“IF()”函数的结果类型为非 NULL 表达式的类型。【?】
默认返回类型“IF()”(将其存储到临时表中时可能很重要)的计算如下:
- 如果“expr2”或“expr3”生成字符串,则结果为字符串。
- 如果“expr2”和“expr3”都是字符串,则如果任一字符串区分大小写,则结果区分大小写。
- 如果“expr2”或“expr3”产生浮点值,则结果为浮点值。
- 如果“expr2”或“expr3”产生整数,则结果为整数。
示例:
mysql> SELECT IF(1>2,2,3);
-> 3
mysql> SELECT IF(1<2,'yes','no');
-> 'yes'
mysql> SELECT IF(STRCMP('test','test1'),'no','yes');
-> 'no'
“IFNULL(expr1,expr2)”:如果“expr1”不是 NULL,则“IFNULL()”返回“expr1”,否则返回“expr2”。
示例:
mysql> SELECT IFNULL(1,0);
-> 1
mysql> SELECT IFNULL(NULL,10);
-> 10
mysql> SELECT IFNULL(1/0,10);
-> 10
mysql> SELECT IFNULL(1/0,'yes');
-> 'yes'
“NULLIF(expr1,expr2)”:如果“expr1 = expr2”为 true,则返回 NULL,否则返回“expr1”。【这与“CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END”相同】
示例:
mysql> SELECT NULLIF(1,1);
-> NULL
mysql> SELECT NULLIF(1,2);
-> 1