日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle入门(十四D)之常规函数

發布時間:2023/12/3 编程问答 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle入门(十四D)之常规函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、NULL處理

(1)函數的計算過程

到目前為止,您已經學會了在簡單語句中應用單行函數。不過,函數可以嵌套任意層。所以,了解嵌套函數的計算過程非常重要。下例就是一個嵌套函數。其計算過程是從最里層開始計算,直到最外層。
SELECT TO_CHAR(NEXT_DAY(ADD_MONTHS(聘用日期, 6),'FRIDAY'), 'fmDay, Month DDth, YYYY') AS "下一天計算結果"
FROM 雇員
WHERE 雇員標識=100;
結果為:

Friday, December 18th, 1987


SELECT TO_CHAR(NEXT_DAY(ADD_MONTHS(聘用日期, 6),'FRIDAY'), 'fmDay, Month DDth, YYYY') AS "下一天計算結果"FROM 雇員? WHERE 雇員標識=100;

? 步驟 1:在聘用日期基礎上加上六個月。

? 步驟 2:確定聘用日期之后的第一個星期五。

? 步驟 3:轉換默認的日期格式,采用如下格式顯示這個星期五:Friday, December 18th, 1987,在輸出結果中這些內容將顯示在列名“下一天計算結果”下。

(2)涉及 Null 值的函數

在課程開始階段,我們已介紹了“Null”這個術語。您可能還記得,Null 就是不可用、未指定、未知或不適用的值。從根本上講,我們無法測試該值是否與其它值一樣,因為我們不知道它是什么值。它不等于任何值,也不等于零!Null 不代表任何實際值,但這并不意味著它不重要。請想象一下這樣的問題:X = Y 正確嗎?要回答此問題,必須知道 X 和 Y 的值。Oracle 有四個涉及使用null 值的常規函數。這四個函數為:
- NVL
- NVL2
- NULLIF

- COALESCE


二、NVL 函數

????NVL 函數可以將 null 值轉換為固定數據類型(日期、字符或數字)的已知值。Null 值列和新值的數據類型必須相同。

該 NVL 函數為:

NVL (可能包含 null 的值或列, 用以替換 null的值)

以下查詢使用字符數據類型的 NVL 函數:
select nvl(注釋, '沒有注釋') from d_播放列表曲目;

Null 值列和新值的數據類型必須相同,如下例
所示:

nvl(批準的費用金額,0) nvl(聘用日期,'01-JAN-97') nvl(專業,'暫無')

????可以在進行計算之前,使用 NVL 函數將包含null 的列值轉換為數字。對 null 執行算術計算時,結果為 null。NVL 函數可以在進行算術計算之前,將 null 值轉換為數字,以避免結果為 null。

????在本示例中,D_合作伙伴表中的“批準的費用金額”列包含 null 值。NVL 函數用于在進行算術計算之前將 null 更改為零。

select 名字, 姓氏, nvl(批準的費用金額, 0) * 1.05 as 費用 from d_合作伙伴;


三、NVL2 函數

????NVL2 函數對包含三個值的表達式求值。如果第一個值不為 null,則 NVL2 函數返回第二個表達式。如果第一個值為 null,則返回第三個表達式。表達式 1 中的值可以采用任意數據類型。表達式 2 和表達式 3 可以采用 LONG 之外的任意數據類型。返回值的數據類型始終與表達式 2 的數據類型相同,除非表達式 2 是字符數據(在這種情況下,返回值為 VARCHAR2 數據類型)。

NVL2 函數是:

????NVL2 (可能包含 null 的表達式 1 值, 表達式 1 不是null 時要返回的表達式 2 值, 表達式 1 是 null 時用以替換 null 的表達式 3 值)

????記憶 NVL2 函數的一個小竅門是:“如果表達式 1 具有值,則返回替代表達式 2;如果表達式 1 是 null,則返回替代表達式 3。”

????在下面所示的 NVL2 函數中,表達式 1 使用數字數據,表達式 2和 3 使用字符數據。
select 姓氏, 薪金, nvl2(傭金百分比, 薪金 + (薪金 * 傭金百分比), 薪金) as 收入 from 雇員;


四、NULLIF 函數

NULLIF 函數對兩個函數進行比較。如果它們相等,則函數返回null。如果不相等,則函數返回第一個表達式。
NULLIF 函數為:

nullif(表達式 1, 表達式 2)

select 名字, length(名字) "名字長度",姓氏, length(姓氏) "姓氏長度", nullif(length(名字), length(姓氏)) as "比較結果" from d_合作伙伴;



五、COALESCE 函數

????COALESCE 函數是 NVL 函數的擴展,但是COALESCE 函數可以接受多個值。單詞“coalesce”的字面意義是“聯合”,這就是該函數所要執行的操作。
????如果第一個函數是 null,則函數會繼續執行下一行,直到找到一個非 null 表達式。當然,如果第一個表達式具有值,則函數將返回第一個表達式并就此結束。

COALESCE 函數為:
COALESCE (表達式 1,表達式 2, ...表達式 n)

分析右側所示的從雇員表進行檢索的 SELECT 語句。

哪些雇員未獲得傭金?您是如何判斷出的?是否有些雇員既未獲得傭金也未獲得薪金?



創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Oracle入门(十四D)之常规函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。