2017-05-09 38 views
-1

Here is a screenshot使用SELECT語句在SQL替換空值? - 更改爲NULL「無佣金」

我需要刪除空的佣金列,並將其更改爲「無佣金」。不知道如何編寫該代碼。我試圖使用UPDATE或SET代碼,但有錯誤。

這是我到目前爲止得到的代碼。

SELECT First_Name || ' ' || Last_Name AS "Full Name", ' NZD' || ' ' || SALARY AS "Salary", 
COMMISSION_PCT AS "COMMISSION_%",SALARY * COMMISSION_PCT AS "Commission" 
FROM EMPLOYEES 
ORDER BY LAST_NAME desc; 
+1

[在SQL服務器查詢以0替換NULL]的可能的複製(http://stackoverflow.com/questions/16840522/replacing-null-with-0-in-a-sql-server-query ) –

+0

我看到那篇文章,並嘗試使用該代碼來做,但不斷收到錯誤。 –

回答

1

嘗試使用用於Oracle代替ISNULL()

SELECT ISNULL(COMMISSION_PCT, 'No commission') 
FROM EMPLOYEES 
+0

我已更改我的代碼,如SELECT ISNULL(COMMISSION_PCT,「無佣金」), First_Name || ''|| Last_Name AS「全名」,「NZD」|| ''|| SALARY AS「薪水」, COMMISSION_PCT爲「佣金_%」,薪水* COMMISSION_PCT爲「佣金」 僱員 ORDER BY LAST_NAME desc;但我仍然有錯誤。 –

+0

ORA-00904: 「ISNULL」:無效的標識符 00904. 00000 - 「%S:無效識別符」 * 原因: *操作: 錯誤在線:18柱:9 –

+0

試聚結()或NVL()代替of isnull – asmgx

1

對於Oracle使用聚結()或NVL():

NVL(pct_commission, 'No commission'); 
+0

我們如何使用該代碼?我只是添加到SELECT部分​​?SELECT First_Name | |''|| Last_Name AS「Full Name」,「NZD」||「'SALARY AS」薪水「, COMMISSION_PCT作爲」佣金_%「,薪水* COMMISSION_PCT爲」佣金「,NVL(pct_commission,'無佣金') FROM EMPLOYEES ORDER BY LAST_NAME desc; like this? –

+0

試試這個:SELECT First_Name ||'' || Last_Name AS「全名」,「NZD」|| ''||薪金爲「薪金」,NVL(COMMISSION_PCT,'沒有佣金')作爲「佣金_%」,薪水* NVL(COMMISSION_PCT,0)作爲「佣金」從僱員排列的LAST_NAME desc; –

+0

好吧,是的。理想情況下,你會用0代替null而不是「No commision」,這樣類型就會匹配起來。可能需要使用to_char()將所有內容轉換爲字符串:SELECT First_Name || ''|| Last_Name AS「全名」,「NZD」|| ''|| SALARY AS「薪金」,COMMISSION_PCT,AS「佣金_%」,SALARY * NVL(TO_CHAR(COMMISSION_PCT),0)作爲「佣金」從僱員名單中刪除LAST_NAME; –

1

在結果的單個列中的所有值必須是相同的數據類型。如果您想要顯示「無佣金」,那意味着您還需要將該號碼轉換爲字符串。在Oracle中,這是使用to_char()函數完成的。

SELECT First_Name || ' ' || Last_Name AS "Full Name", 
     ' NZD' || ' ' || SALARY AS "Salary", 
     COMMISSION_PCT AS "COMMISSION_%", 
     nvl(to_char(salary * commission_pct, 'FM9999.99'), 'No Commission') AS "Commission" 
FROM EMPLOYEES 
ORDER BY LAST_NAME desc;