首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

Access 數據庫刪除空記錄/零長度字符串:區別 Null 與空串、修復壓縮、VBA 自動化清理

     編輯:PHP 相關知識

核心概念區別

概念含義輸入方式判斷函數索引行為
Null值缺失/未知留空、不輸入IsNull()、Is Null不計入唯一索引
零長度字符串 (ZLS)已知無值,確認為空輸入 "" (雙引號)Len()=0、=""計入唯一索引,唯一約束衝突

查找並刪除空記錄

1. 刪除全 Null 行 (所有列均為 Null)

DELETE FROM YourTable
WHERE Col1 IS NULL AND Col2 IS NULL AND Col3 IS NULL ...;

2. 刪除關鍵列為 Null/ZLS 的行

-- 單列
DELETE FROM YourTable WHERE KeyCol IS NULL OR KeyCol = '';

-- 多列任一為空
DELETE FROM YourTable 
WHERE Col1 IS NULL OR Col1 = '' 
   OR Col2 IS NULL OR Col2 = ''; 

3. 批量清理:將 ZLS 統一轉為 Null (推薦規範化)

UPDATE YourTable SET Col1 = NULL WHERE Col1 = '';
UPDATE YourTable SET Col2 = NULL WHERE Col2 = '';
-- 後續只需判斷 IS NULL

Access 界面操作

  1. 打開表 → 數據表視圖
  2. 選中記錄選擇器 (最左灰色欄) → Delete 鍵
  3. 或篩選器:字段下拉 → 勾選 "(空白)" / 取消勾選 → 刪除可見行

修復並壓縮數據庫 (解決碎片、膨脹、索引錯誤)

菜單:文件 → 信息 → 修復並壓縮數據庫

效果:重建索引、回收空間、修復損壞、重置自動編號 (尾部刪除後)

VBA 自動化壓縮 (定時任務/啟動時)

Public Sub CompactAndRepairDB(SourcePath As String, Optional DestPath As String = "")
    On Error GoTo ErrHandler
    If DestPath = "" Then DestPath = SourcePath & "_compacted"
    
    ' 確保目標不存在
    If Dir(DestPath) <> "" Then Kill DestPath
    
    ' 執行壓縮
    Application.CompactRepair SourceFile:=SourcePath, DestinationFile:=DestPath
    
    ' 覆蓋原文件 (可選)
    ' Kill SourcePath
    ' Name DestPath As SourcePath
    
    MsgBox "壓縮完成: " & DestPath
    Exit Sub
ErrHandler:
    MsgBox "錯誤: " & Err.Description
End Sub

大數據量 Access 遷移建議

  • Access 2GB 文件大小限制,單表 1GB
  • 並發 >5-10 用戶性能急劇下降
  • 遷移目標:SQL Server Express / LocalDB / PostgreSQL / MySQL
  • 遷移工具:SSMA (SQL Server Migration Assistant) / Upsizing Wizard

總結

  • 區分 Null (未知) 與 ZLS (已知空),業務邏輯統一規範
  • 刪除空記錄用 IS NULL OR = '' 組合條件
  • 定期 修復並壓縮 維護性能
  • 超 500MB/並發 >10 時**強烈建議遷移至 SQL Server**
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved