2009-10-18 190 views
1

使用Access 2003如何刪除空白行?

表1

ID Name Value 

001 Raja 100 
002 Ramu 200 


004 Raqu 500 



008 Ravi 250 

...

在這裏,我想在我的表中刪除空行?

Delete from table1 ...? 

期望輸出

ID名稱值

001 Raja 100 
002 Ramu 200 
004 Raqu 500 
008 Ravi 250 

...,

需要查詢的幫助。

+0

這沒有密鑰,因此不是表(這是問題的一半)。 – onedaywhen 2009-10-19 07:27:05

回答

5
Delete from table1 
where ID=' ' 
and Name=' ' 
and Value=' ' 

Delete from table1 
where ID is null 
and Name is null 
and Value is null 
+0

小心空白空間。製表符或回車符。這可能會導致SQL失敗,因爲該字段不是NULL,也不是一個空格。您可以使用ms-access中的某些內置函數isnumeric()來優化刪除條件。 – heferav 2009-10-18 10:58:58

+0

IsNumeric()?這將如何幫助? – 2009-10-19 00:38:38

1

如果你的領域alow零長度字符串,可以在其中有空白,這裏有一個解決方案:

DELETE FROM table1 
    WHERE Len(Trim(ID & ''))=0 
    AND Len(Trim(Name & ''))=0 
    AND Len(Trim(Value & ''))=0; 

我假設你正在寫你要在Access中執行的SQL,因爲Trim()和Len()是Access/VBA函數(都是由Access表達式服務使用VBA提供的,所以這不能通過ODBC或OLEDB工作)。

現在,忽略了這些字段中的其他類型的問題,如製表符或Cr/Lf字符。如果以上操作不會刪除所有行,那麼您必須在字段中查看實際字符,然後清除它們。

我也希望您的字段的名稱是假的,因爲NAME和VALUE都是Access保留字,並且應避免在Access/Jet/ACE中的任何級別的對象名稱中使用。

0

我會建議一個更通用的解決方案:

DELETE tblYourTable.*, tblYourTable.[OneFieldThatIsAlwaysEmpty] 
FROM tNewTable 
WHERE tNewTable.[OneFieldThatIsAlwaysEmpty] Is Null; 

這要求,當然,你有你的表中的字段是忠實地空(NULL)

的好處是,你不必須定義表格中的所有單個字段。在上面的答案中,這是沒有問題的,因爲示例表只有兩個或三個字段。但通常桌子更大。

請注意,如果您的表格不是Access中的實際表格,而是一個所謂的「鏈接表格」,它會將數據從Excel。在這種情況下,您首先應該將數據傳輸到真正的Access表中。

(這已在Access 2010中測試過)