2012-07-05 95 views
0
  • 數據庫:網球顯示任何值而不是null?

  • 表:玩家

  • 一些列:playerno,姓,名,leagueno。

  • 任務:如果聯賽數爲NULL,則給出值1

  • 問:我們能做到這一點沒有COALESCE函數?或沒有任何其他功能?

  • 我的代碼是錯誤的。我仍然看到一個空值而不是1.此外,由於這種情況還有不必要的列。

代碼:

use tennis; 
select playerno, name, initials,leagueno, 
case 
when leagueno = null then 1 
end 
from players 
where tennis.players.town = 'Stratford' 
order by leagueno desc; 

請幫我做是正確的。我有使用合併的答案。但我想嘗試另一種方法。

+0

爲什麼格式化系統如此複雜且不直觀? – Master 2012-07-05 21:32:53

+2

簡而言之,在SQL中,空值是一個奇怪的現象。您需要使用leagueno IS null而不是leagueno = null。 – 2012-07-05 21:32:58

+0

你也可能想要MySQL的['ifnull'函數](http://dev.mysql.com/doc/refman/5.5/en/control-flow-functions.html#function_ifnull)。爲什麼你不想使用函數來完成它? – lanzz 2012-07-05 21:33:51

回答

1

我想你想要的是這樣的:

use tennis; 

select playerno, name, initials, 
case 
when leagueno is null then 1 -- note: is null instead of = null 
else leagueno 
end as leagueno -- This names the result column "leagueno", which may be useful 
       -- depending on how you read the result 
from players 
where tennis.players.town = 'Stratford' 
order by leagueno desc; 

這基本上使最後一列leagueno只是如果它是NULL,你1代替。

+0

是的。它工作但有一個小問題。 此代碼獲取結果,但作爲另一列,也稱爲leagueno。我想要在原始leagueno列中看到這些效果。 電子書解決方案(作品): 選擇的首字母,姓名,凝聚(leagueno,1)從 玩家 其中鎮='斯特拉福德 – Master 2012-07-05 21:43:18

+0

@ user1499832檢查我的select語句的第一行。你的結尾是',leagueno'但我的不是。 – 2012-07-05 21:57:51

+0

對不起,我沒有注意到。謝謝 !順便說一句,哪一種方法更有效?你的還是上面評論中提到的合併(-------)方法? – Master 2012-07-05 22:00:15