[英]How to get rid of NULL values in SQL Server 2008 table
我有一張桌子:
1 0.22 0.14 0.05
23 11 0.32 0.16
4 NULL 1 0.39
NULL NULL .8 1
NULL .5 .7 NULL
我想修改表成為
1 0.22 0.14 0.05
23 1 0.32 0.16
4 -1 1 0.39
-1 -1 .8 1
-1 .5 .7 -1
如果你看我把NULL
改為-1
我在努力:
SELECT
coalesce([a1], -1), coalesce([a2], -1),coalesce([a3], -1), coalesce([a4], -1)
FROM tableee;
哪個是正確的,但是當我做一個SELECT *
我得到了具有null
值的表...
我如何修改表,所以當我執行SELECT *
我不會得到NULL
而是-1
而不是?
如果要更改表中的值,則需要更新表:
UPDATE Tableeee t
SET t.a1 = COALESCE(t.a1,-1),
t.a2 = COALESCE(t.a2,-1),
t.a3 = COALESCE(t.a3,-1)
t.a4 = COALESCE(t.a4,-1)
或者,您可以將列更改為不可為空,並提供默認值-1。 如果您有這個要求,您可能希望這樣做。 更新數據只是一個綳帶,您需要在數據庫中強制執行此要求。
您可以更改表模式,以使列不可為空,並且默認值為-1。 這應該改變數據,以便所有NULL值變為-1。
如果您不想實際更改數據而只想更改查詢返回的數據集,請考慮根據COALESCE()
查詢創建視圖。 然后,只要您想要看到-1代替NULL,就可以使用該視圖。
沒有辦法實際修改表,因此使用select *得到-1而不是null。 您允許這些列使用空值,因此隱藏空值不是理想的邏輯。
現在說,你有三個選擇:
1)更新表以不允許這些列中的空值,然后將默認值設置為-1(或使用觸發器) 注意:這需要管理員權限,您可能沒有 。
2)始終使用coalease或isnull()測試進行選擇
3)你可以查看同一個表,然后在視圖中選擇你的coalesce()或isnull()邏輯,然后你可以從視圖中選擇*,它會給你相同的表,但是null改變了。
僅供參考,選項2或3有開銷,所以只有在#1不是選項時才這樣做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.