Oracle Single-Row Functions(單行函數)——NULL-Related Functions

来源:http://www.cnblogs.com/shea/archive/2017/10/08/7636637.html
-Advertisement-
Play Games

參考資料:http://docs.oracle.com/database/122/SQLRF/Functions.htm#SQLRF006 Single-row functions return a single result row for every row of a queried table ...


參考資料:http://docs.oracle.com/database/122/SQLRF/Functions.htm#SQLRF006

Single-row functions return a single result row for every row of a queried table or view. These functions can appear in select lists, WHEREclauses, START WITH and CONNECT BY clauses, and HAVING clauses.

單行函數返回查詢表或視圖的每一行的單一結果行。單行函數可以出現在SELECT列中,WHERE子句,START WITH 和CONNECT BY子句以及HAVING子句中。

NULL-Related Functions:

  The NULL-related functions facilitate null handling. 

The NULL-related functions are:

 


 

  NVL:

    語法:  NVL(expr1,expr2) 

    功能:  

        NVL lets you replace null (returned as a blank) with a string in the results of a query. If expr1 is null, then NVL returns expr2. If expr1 is not null, then NVL returns expr1.

    說明:  

        1.The arguments expr1 and expr2 can have any data type.

        參數expr1和expr2可以是任何數據類型。

        2. If their data types are different, then Oracle Database implicitly converts one to the other.

        如果倆參數數據類型不同,oracle資料庫將進行隱式轉換。

        3.If they cannot be converted implicitly, then the database returns an error.

        如果倆參數不能進行隱式轉換,資料庫將返回一個error。

        4.The implicit conversion is implemented as follows:(隱式轉換如下)

          1>.If expr1 is character data, then Oracle Database converts expr2 to the data type of expr1 before comparing them and returns VARCHAR2 in the character set of expr1.

          如果expr1是字元數據,則資料庫會將expr2轉換為expr1的數據類型,並返回expr1的字元集中的VARCHAR2。

          2>.If expr1 is numeric, then Oracle Database determines which argument has the highest numeric precedence, implicitly converts the other argument to that data type, and returns that data type.

          如果expr1是數字,則Oracle資料庫確定哪個參數具有最高的數字優先順序,將另一個參數隱式轉換為該數據類型,並返回該數據類型。

    用途

        最主要的是格式化數據,比如涉及到數字的,不想出現空數據時,可用nvl(num,0)來得到0。由於  null+[或-,*,/]數字  等於null,所以在表達式中對可能為空的值要使用nvl。

 


 

  NVL2:

    語法:  NVL2(expr1,expr2,expr3)

    功能:

        NVL2 lets you determine the value returned by a query based on whether a specified expression is null or not null. If expr1 is not null, then NVL2 returns expr2. If expr1 is null, then NVL2 returns expr3.

    說明:

        1.The argument expr1 can have any data type. The arguments expr2 and expr3 can have any data types except LONG.

        參數expr1可以是任何數據類型,參數expr2和expr3可以是除了LONG類型外的任何數據類型。

        2.If the data types of expr2 and expr3 are different, then Oracle Database implicitly converts one to the other.

        如果參數expr2和expr3是不同的數據類型,資料庫將會隱式的將其中一個轉換為另一個。

        3.If they cannot be converted implicitly, then the database returns an error.

        如果倆參數不能進行隱式轉換,資料庫將返回一個error。

        4.If expr2 is character or numeric data, then the implicit conversion is implemented as follows:

        (如果expr2是字元或是數字數據,則隱式轉換如下實現)

          1>.If expr2 is character data, then Oracle Database converts expr3 to the data type of expr2 before returning a value unless expr3 is a null constant. In that case, a data type conversion is not necessary, and the database returns VARCHAR2 in the character set of expr2.

          如果expr2是字元數據,資料庫會將expr3(null除外)轉換為expr2的數據類型。如果expr3為空常量,則不需要進行數據類型轉換,資料庫會返回expr2的字元集中的VARCHAR2。

          2>.If expr2 is numeric data, then Oracle Database determines which argument has the highest numeric precedence, implicitly converts the other argument to that data type, and returns that data type.

          如果expr2是數字數據,那麼Oracle資料庫將確定哪個參數具有最高的數字優先順序,將另一個參數隱式轉換為該數據類型,並返回該數據類型。

 


  NULLIF:

    語法:  NULLIF(expr1,expr2)

    功能:  NULLIF compares expr1 and expr2. If they are equal, then the function returns null. If they are not equal, then the function returns expr1. You cannot specify the literal NULL for expr1.

    說明:

        If both arguments are numeric data types, then Oracle Database determines the argument with the higher numeric precedence, implicitly converts the other argument to that data type, and returns that data type. If the arguments are not numeric, then they must be of the same data type, or Oracle returns an error.

         如果倆參數是數字數據類型,則Oracle資料庫將確定具有較高數字優先順序的參數,將另一個參數隱式轉換為該數據類型,並返回該數據類型。 如果參數不是數字,則它們必須是相同的數據類型,否則Oracle返回一個error。

        The NULLIF function is logically equivalent to the following CASE expression:

CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END

 


 

   LNNVL:

    語法:  LNNVL(condition)

    功能:  LNNVL provides a concise way to evaluate a condition when one or both operands of the condition may be null.

         The function can be used in the WHERE clause of a query, or as the WHEN condition in a searched CASE expression.

         It takes as an argument a condition and returns TRUE if the condition is FALSE or UNKNOWN and FALSE if the condition is TRUE

 

         LNNVL can be used anywhere a scalar expression can appear, even in contexts where the IS [NOTNULLAND, or OR conditions are not valid but would otherwise be required to account for potential nulls.

         Oracle Database sometimes uses the LNNVL function internally in this way to rewrite NOT IN conditions as NOT EXISTS conditions.

         In such cases, output from EXPLAIN PLAN shows this operation in the plan table output.

           The condition can evaluate any scalar values but cannot be a compound condition containing ANDOR, or BETWEEN.

 


   NANVL:

    語法:  NANVL(n2,n1)

    功能:

      The NANVL function is useful only for floating-point numbers of type BINARY_FLOAT or BINARY_DOUBLE.

      It instructs Oracle Database to return an alternative value n1 if the input value n2 is NaN (not a number). If n2 is not NaN, then Oracle returns n2.

      This function takes as arguments any numeric data type or any nonnumeric data type that can be implicitly converted to a numeric data type.

      Oracle determines the argument with the highest numeric precedence, implicitly converts the remaining arguments to that data type, and returns that data type.

 


 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • CSS常見佈局方式 以下總結一下CSS中常見的佈局方式。本人才疏學淺,如有錯誤,請留言指出。 如需轉載,請註明出處: "CSS常見佈局方式" 目錄: 1. 使用BFC隱藏屬性 2. float + margin 3. absolute + margin 4. 聖杯佈局 5. 雙飛翼佈局 6. fle ...
  • 前言:最近開始做IOS端的游戲開發,因cocos2d-x更新太過頻繁,使得度娘上一兩年前的博客內容與目前實際情況矛盾很大。本該10分鐘搞定的事情讓我搞了半個十一黃金周。 本次我使用的macOS Sierra 版本10.12.6 (16G29),Xcode 9.0 cocos2d-x版本為3.15.1 ...
  • 陸陸續續做了一個半月左右的「喵嗚天氣」終於在今天下午成功提交到應用商店(騰訊應用寶)。期間遇到兩個小問題,記錄如下: 1、上傳安裝包失敗,提示「無法獲取簽名信息,請上傳有效包(110506)」。 安裝包是通過 Android Studio 中的 Build Generate Signed APK.. ...
  • 這是一個朋友曾經給我的一個文件,這裡我新建了一個基於NSObject對象的一個ChineseToSpell,.m文件內容有點多 .h文件內容 // // ChineseToSpell.h // #import <Foundation/Foundation.h> @interface ChineseT ...
  • 前面提到AFNetworking是一個很強大的網路三方庫,首先你需要引入AFNetworking三方庫;如封裝的有誤還請指出,謝謝! 1.Get請求 /**Get請求 url 伺服器請求地址 success 伺服器響應返回的結果 faile 失敗的信息 */ + (void)getHttpReque ...
  • 生成二維碼圖片也是項目中常用到的,二維碼的掃描Git上有很多好用的,這裡主要說下二維碼的生成 1.普通二維碼 1.1 方法 /** 生成二維碼 QRStering:字元串 imageFloat:二維碼圖片大小 */ + (UIImage *)createQRCodeWithString:(NSStr ...
  • 去除navigationBar上那條線: ///隱藏navigationBar導航欄線(直接寫在UINavigationController-viewDidLoad方法裡面即可) UIView *backgroundView = [self.navigationBar subviews].first ...
  • 最近在做app,用的volley傳參,有一個地方傳中文參數不行(貌似是get方式),我又試了下post方式,成功了,記錄下,以後有用! ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...