新聞中心
CASE
聲明

我們提供的服務(wù)有:成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、會(huì)澤ssl等。為上千企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的會(huì)澤網(wǎng)站制作公司
CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END
OR
CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END
說明
在第一個(gè)方案的返回結(jié)果中,value = compare-value。而第二個(gè)方案的返回結(jié)果是第一種條件為真。如果沒有匹配的結(jié)果值,則返回結(jié)果為 ELSE 后的結(jié)果,如果沒有 ELSE 部分,則返回值為 NULL。
例子
obclient> select CASE 'b' when 'a' then 1 when 'b' then 2 END;
+----------------------------------------------+
| CASE 'b' when 'a' then 1 when 'b' then 2 END |
+----------------------------------------------+
| 2 |
+----------------------------------------------+
1 row in set (0.01 sec)
obclient> select CASE concat('a','b') when concat('ab','') then 'a' when 'b' then 'b' end;
+--------------------------------------------------------------------------+
| CASE concat('a','b') when concat('ab','') then 'a' when 'b' then 'b' end |
+--------------------------------------------------------------------------+
| a |
+--------------------------------------------------------------------------+
1 row in set (0.01 sec)
obclient> select case when 1>0 then 'true' else 'false' end;
+--------------------------------------------+
| case when 1>0 then 'true' else 'false' end |
+--------------------------------------------+
| true |
+--------------------------------------------+
1 row in set (0.00 sec)
IF
聲明
IF(expr1,expr2,expr3)
說明
如果 expr1 的值為 TRUE(即:expr1<>0 且 expr1<>NULL),返回結(jié)果為 expr2;否則返回結(jié)果為 expr3。
IF() 返回結(jié)果可以是數(shù)值或字符串類型,它取決于使用的內(nèi)容。
如果 expr2, expr3 中只有一個(gè)明確是 NULL,則 IF() 函數(shù)的結(jié)果類型為非 NULL 表達(dá)式的結(jié)果類型。
例子
obclient> select if(5>6, 'T','F'), if (5>6, 1, 0), if(null, 'True', 'False'), if(0, 'True', 'False')\G
*************************** 1. row ***************************
if(5>6, 'T','F'): F
if (5>6, 1, 0): 0
if(null, 'True', 'False'): False
if(0, 'True', 'False'): False
1 row in set (0.01 sec)
IFNULL
聲明
IFNULL(expr1, expr2)
說明
假設(shè) expr1 不為 NULL,則 IFNULL() 的返回值為 expr1;否則其返回值為 expr2。IFNULL() 的返回值是數(shù)值或字符串,具體情況取決于其所使用的語境。
IFNULL() 的默認(rèn)返回值類型按照以下方式計(jì)算:
|
表達(dá)式 |
返回值 |
|---|---|
|
|
字符串 |
|
|
浮點(diǎn) |
|
|
整數(shù) |
假如 expr1 和 expr2 都是字符串,且其中任何一個(gè)字符串區(qū)分大小寫,則返回結(jié)果是區(qū)分大小寫。
例子
obclient> SELECT IFNULL('abc', null), IFNULL(NULL+1, NULL+2), IFNULL(1/0, 0/1);
+---------------------+------------------------+------------------+
| IFNULL('abc', null) | IFNULL(NULL+1, NULL+2) | IFNULL(1/0, 0/1) |
+---------------------+------------------------+------------------+
| abc | NULL | 0.0000 |
+---------------------+------------------------+------------------+
1 row in set (0.01 sec)
NULLIF
聲明
NULLIF(expr1, expr2)
說明
如果 expr1 = expr2 成立,那么返回值為 NULL,否則返回值為 expr1。這和 CASE WHEN
expr1 = expr2 THEN NULL ELSE expr1 END 相同。注意,如果參數(shù)不相等,則兩次求得的值為 expr1。
例子
obclient> SELECT NULLIF('ABC', 123), NULLIF('123',123), NULLIF(NULL, 'abc');
+--------------------+-------------------+---------------------+
| NULLIF('ABC', 123) | NULLIF('123',123) | NULLIF(NULL, 'abc') |
+--------------------+-------------------+---------------------+
| ABC | NULL | NULL |
+--------------------+-------------------+---------------------+
1 row in set, 1 warning (0.01 sec)
ORA_DECODE
聲明
ORA_DECODE(條件, 值1, 返回值1, 值2, 返回值2, ... 值n, 返回值n, 缺省值)
說明
ORA_DECODE() 函數(shù)功能等同于 Oracle 數(shù)據(jù)庫的 DECODE() 函數(shù)功能。
該函數(shù)的含義如下:
IF 條件=值1
THEN RETURN(返回值1)
ELSIF 條件=值2
THEN RETURN(返回值2)
......
ELSIF 條件=值n
THEN RETURN(返回值n)
ELSE RETURN(缺省值)
END IF
網(wǎng)頁名稱:創(chuàng)新互聯(lián)OceanBase教程:OceanBase流程控制函數(shù)
網(wǎng)站網(wǎng)址:http://m.fisionsoft.com.cn/article/dhgcdoi.html


咨詢
建站咨詢
