91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle中條件函數有哪些

發布時間:2022-03-29 10:53:56 來源:億速云 閱讀:452 作者:小新 欄目:編程語言

小編給大家分享一下Oracle中條件函數有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

條件函數

      NVL

                   NVL函數評估任何數據類型的列或者表達式是不是空值。如果原始項是空值,返回備選的非空值;否則,返回原始項。

                   NVL函數有兩個強制參數。語法:NVL(original,ifnull)。其中original表示要測試的項,如果original項計算為空,就返回ifnull。original和ifnull參數的數據類型必須一致。它們必須是相同的類型,或者可能將ifnull隱式轉換為original參數的類型。NVL函數返回值的數據類型與original參數的數據類型相同。

                   select nvl(1234) from dual;--錯誤

                   select nvl(null,1234) from dual; ---1234

                   select nvl(substr('abc',4),'No substring exists') from dual;

      NVL2

                   NVL2函數是對NVL函數的增強,但功能非常類似。NVL2函數評估任何數據類型的列或者表達式是不是空值。如果第一項不是空值,那么返回第二個參數,否則返回第三個參數。

                   NVL2函數有三個強制參數。語法:NVL2(original,ifnotnull,ifnull),其中original表示被測試的項。如果original不是空值,就返回ifnotnull;如果original是空值,就返回ifnull。ifnotnull和ifnull參數的數據類型必須一致或者ifnull參數可以轉換為ifnotnull參數的數據類型,它們不能是LONG數據類型。它們可以是相同的類型,或者可以將ifnull轉換為ifnotnull參數的類型。NVL2函數返回的數據類型與ifnotnull參數的數據類型相同。

                   select nvl2(1234,1,'a string') from dual; --錯誤

                   select nvl2(null,1234,5678) from dual;  --5678

                   select nvl2(substr('abc',2),'Not bc','No substring') from dual;

      NULLIF

                   NULLIF函數測試兩項的相等性。如果它們相等,函數就返回空值,否則返回這兩個測試項的第一項。

                   NULLIF函數有兩個可以是任何數據類型的強制參數,兩個參數類型必須一致,第一個參數不可以為空。語法:NULLIF(ifunequal,comparison_term),其中比較參數ifunequal和comparison_term。如果它們相同,返回NULL。如果它們不同,返回ifunequal參數。

                   select nullif(1234,1234) from dual;

                   select nullif('24-JUL-2009','24-JUL-09') from dual;

                   select nullif(1,null) from dual;  --1

                   select nullif(null,null) from dual;----返回ORA-00932: inconsistent datatypes: expected - got CHAR

      COALESCE

                   COALESCE函數從參數列表中返回第一個非空值。如果所有參數為空,那么返回空值。

                   COALESCE函數有兩個強制參數和任何數量的可選參數。語法:COALESCE(expr1,expr2,...,exprn),如果expr1不是空值,就返回它,否則,如果expr2不是空值,就返回它,以此類推。COALESCE函數是NVL函數的一般形式:

                   COALESCE(expr1,expr2)=NVL(expr1,expr2)

                   COALESCE(expr1,expr2)=NVL(expr1,NVL(expr2,expr3))

                   如果找到非空值,COALESCE返回的數據類型與第一個非空參數的數據類型相同。為了避免出現“ORA-00931:inconsistent date types”錯誤,所有非空參數的數據類型必須與第一個非空參數的數據類型一致。

                   select coalesce(null,null,null,'a string') from dual;

                   select coalesce(null,null,null) from dual;

                   select coalesce(substr('abc',4),'not bc','no substring') from dual;

                   select coalesce(substr('abc',4),'not bc',123) from dual;--錯誤

      DECODE

                   DECODE函數通過測試前兩項的相等性來實現if-then-else條件邏輯,如果它們相等,則返回第三個參數,如果它們不相等,可能返回另一項。

                   DECODE函數至少使用三個強制參數,但可以使用更多參數。語法:DECODE(expr1,comp1,iftrue1[,comp2,iftrue2...[,compN,iftrueN]][,iffalse])。這些參數的計算如下面的偽代碼示例:

                   if expr1 = comp1 then return iftrue1

                            else if expr1 = comp2 then return iftrue 2

                                     ...

                                     ...

                            else if expr1 = compN then return iftrueN

                            else return null | iffalse;

                   DECODE 函數的所有參數都可以是表達式。返回的數據類型與第一個匹配比較選項的數據類型相同的。表達式expr1被隱式轉換為第一個比較參數comp1的數據類型。計算其他比較參數comp2...compn時,也會將它們隱式轉換為comp1相同的數據類型。DECODE 認為兩個空值相等,因此如果expr1是空值,并且comp3是出現的第一個空值比較參數,那么就會返回對應的結果參數iftrue3。

                   select decode(1234,123,'123 is a match') from dual;

                   select decode(1234,123,'123 is a match','No match') from dual;

                   select decode('search','comp1','true1','comp2','true2','search','true3',substr('2search',2,6),'true4','false') from dual;

                   select decode(null,'comp1','true1','comp2','true2',null,'true3','false') from dual;

                   select decode(1234,123,123,'No match') from dual; --‘No match'ORA-01722: invalid number 

      CASE表達式

                   CASE表達式在所有第三和第四代編程語言都可以實現。和DECODE函數一樣,CASE表達式使用if-then-else條件邏輯。CASE表達式有兩個變體。簡單的CASE表達式列出條件搜索項一次,由每個比較表達式來測試與搜索項的相等性。搜索的CASE表達式列出每個比較表達式的單獨條件。

                   CASE表達式至少使用三個強制參數,但可以使用更多參數。其語法取決于是使用簡單CASE表達式還是使用搜索的CASE表達式。

                   簡單CASE表達式的語法:

                            CASE search_expr

                                     WHEN comparison_expr1 THEN iftrue1

                                     [WHEN comparison_expr2 THEN iftrue2

                                               ...

                                      WHEN comparison_exprN THEN iftureN]

                                     [ELSE iffalse]

                            END

                   簡單CASE表達式包含在CASE...END代碼塊內,由至少一個WHEN...THEN語句組成。在最簡單的情況下——只有一個WHEN...THEN語句,search_expr與comparison_expr1進行比較。如果它們相等,姥返回結果iftrue1。如果不相等,那么返回一個空值,除非定義了ELSE組件,這個情況返回默認的iffalse值。當CASE表達式中有多個WHEN...THEN語句時,就會不斷搜索匹配的比較表達式,直到找到匹配項為止。

                   搜索、比較和結果參數可以是列值、表達式或都字面值,但必須都是相同數據類型。

                            select

                                     case substr(1234,1,3)

                                               when '134' then '1234 is a match'

                                               when '1235' then '1235 is a match'

                                               when concat('1','23') then concat('1','23')|| ' is a match'

                                               else 'no match'

                                     end

                            from dual;

                   搜索的CASE表達式的語法:

                            CASE

                                     WHEN condition1 THEN iftrue1

                                     [WHEN condition2 THEN iftrue2

                                      ...

                                      WHEN conditionN THEN iftrueN]

                                     [ELSE iffalse]

                            END

                   搜索的CASE表達式包含在CASE...END代碼塊內,由至少一個WHEN...THEN語句組成。在最簡單的情況下——只有一個WHEN...THEN語句,計算condition1;如果它是true,那么返回結果iftrue1。如果不是,那么就返回一個空值,除非定義了ELSE組件,這種情況下,返回默認的iffalse值。當CASE表達式中有多個WHEN...THEN語句時,就會不斷搜索匹配的比較表達式,直到找到匹配項為止。

                            select

                                     case

                                               when length(substr(1234,1,3)) = 1 then 'length of substring is 1'

                                               when length(substr(1234,1,3)) = 2 then 'length of substring is 2'

                                               when length(substr(1234,1,3)) = 3 then 'length of substring is 3'

                                               else 'no match'

                                     end

                            from dual;

以上是“Oracle中條件函數有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

察隅县| 集贤县| 湛江市| 高碑店市| 五大连池市| 岐山县| 青河县| 桑日县| 英德市| 静安区| 尖扎县| 闽侯县| 鸡东县| 华阴市| 涟水县| 读书| 绥棱县| 龙里县| 关岭| 诸城市| 绍兴市| 绥宁县| 永福县| 鄯善县| 桃园市| 辽中县| 大安市| 长泰县| 资溪县| 屯昌县| 邵阳市| 仁寿县| 虞城县| 上饶县| 肥东县| 读书| 鲁山县| 分宜县| 奉贤区| 靖远县| 天等县|