Hive中表示式包含空值的問題

2021-09-02 18:41:55 字數 1646 閱讀 6965

在學習hive過程中遇到了乙個問題:如果查詢語句中的表示式包含空值,會導致最終表示式結果為空值。

舉乙個例子,假設有乙個員工表emp

name

salcomm

jack

1000

200tony

1200

300tom

1300

null

rose

900100

lily

800500

tim1100

null

表中第一列是姓名,第二列是月薪,第三列是獎金

現在想獲得年薪年收入,其中:

年薪 = sal * 12

年收入 = sal * 12 + comm

select name, sal * 12, sal * 12 + comm

from emp;

查詢結果:

name

sal * 12

sal * 12 + comm

jack

12000

12200

tony

14400

14700

tom15600

null

rose

10800

10900

lily

9600

10100

tim13200

null

可以看到涉及到空值的表示式無法正常表示

經過查詢發現了乙個解決方法:nvl函式

nvl函式:空值轉換函式

函式形式:nvl(expr1,expr2)

作用:將查詢為null值轉換為指定值

注意:

若expr1為null,則返回expr2,否則返回expr1

適用於數字型、字元型和日期型,但是expr1和expr2的資料型別必須為相同型別

select name, sal * 12, sal * 12 + nvl(comm, 0)

from emp;

查詢結果:

name

sal * 12

sal * 12 + comm

jack

12000

12200

tony

14400

14700

tom15600

15600

rose

10800

10900

lily

9600

10100

tim13200

13200

細說plsql中的空值表示式

最近寫sql的時候遇到了一些麻煩,一翻深究之後發現了關於空值表示式的規律,先看幾個例子 declare a integer b integer c boolean begin a 1 b null c a b if a b then dbms output.put line print yes el...

用正規表示式匹配「空值」

最近在做乙個專案,要讀取文字檔案匯入資料庫,但是為了效能和介面友好的問題,於是打算匯入之前檢查文字檔案的格式是否正確,如果不正確,則作出相應提示而停止匯入,所以要對文字檔案逐行掃瞄,然後檢查每一行的格式,如果不符合約定的格式,則提示使用者對應的行數。自然而然想到用正規表示式。但是就有個問題了,文字檔...

Python中 表示式和 is 的區別

x y表示兩個物件的值相同,x is y表示兩者是同乙個物件 例1 x和y是兩個列表,它們的值相同,但不是同乙個物件 x 1,2,3 y 1,2,3 x y true x is y false 例2 x和y是同乙個物件 x 1,2,3 y x x is y true 例3 字典是無序的,所以x和y的...