首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Access 與 SQL Server 語法差異完整對照:布林、日期、自動編號、刪除、函數、轉換實戰

     編輯:MySQL 資料庫相關知識

Access (Jet/ACE) 與 SQL Server (T-SQL) 在資料類型、函數、DML/DDL 語法上存在顯著差異,遷移或跨平台開發時必須逐項對照調整。

核心語法差異對照表

類別AccessSQL Server備註
布林字面值True / False1 / 0 或 BITAccess 欄位類型「是/否」→ SQL Server BIT
日期字面值#2023-01-01#'2023-01-01'Access 專用 #包裹#
當前日期時間Now() / Date() / Time()GETDATE() / SYSDATETIME()
日期差DateDiff('d', d1, d2)DATEDIFF(day, d1, d2)Access 間隔字串 'd'、'm'、'yyyy'
自動編號AUTOINCREMENT (長整數)IDENTITY(1,1)遷移後需手動 ALTER COLUMN ... ADD IDENTITY
是/否 欄位轉換BIT (非空)BIT (可空)遷移後常變非空,需 ALTER COLUMN col BIT NULL
刪除語法DELETE * FROM tbl WHERE ...DELETE FROM tbl WHERE ... (無 *)
字串連接& 或 ++ (需 SET CONCAT_NULL_YIELDS_NULL OFF 兼容)
VB 函數支援可直接用 CStr(), Format() 等不可用,需對應 T-SQL 函數
日期型別預設Date/Time (雙精度浮點)DATETIME / DATETIME2遷移建議目標用 DATETIME2 範圍更大
TOP 子句SELECT TOP 10 *SELECT TOP (10) * (建議加括號)

Access → SQL Server 遷移實戰步驟

  1. Access 2003+ 開啟 .mdb → 「工具」→「資料庫實用程式」→「轉換資料庫」→ 轉為 2002-2003 格式。
  2. 「升遷精靈」→ 選「新建資料庫」→ 填寫 SQL Server 登入資訊、目標資料庫名。
  3. 選擇遷移表 → 保留主鍵/索引/關聯 → 完成。
  4. SSMS 開啟目標庫 → 「工作」→「產生指令碼」→ 全選物件 → 存為 .sql。
  5. 記事本開啟腳本 → 批次替換:
    • smalldatetime → datetime (或 datetime2)
    • nvarchar → varchar (視需求)
  6. SSMS 執行腳本建立結構 → 「資料庫匯入/匯出精靈」從 Access 匯入資料。

常見遷移坑點

  • 自動編號未轉為 IDENTITY:升遷精靈不處理,需事後 ALTER TABLE t ALTER COLUMN id INT IDENTITY(1,1)。
  • 日期欄位變 smalldatetime:範圍僅 1900-2079,歷史資料會截斷,建議腳本階段統一改 DATETIME2。
  • BIT 欄位變 NOT NULL:Access「是/否」預設 False,遷移後變 BIT NOT NULL,若應用允許 NULL 需手動 ALTER COLUMN col BIT NULL。
  • 刪除語法星號:Access DELETE * FROM 在 SQL Server 報錯,統一移除 *。

跨平台查詢建議

若程式碼需同時支援 Access 與 SQL Server,建議:

  1. 使用參數化查詢,避免字面值語法差異。
  2. 將日期、布林、字串處理封裝至 DAL 層,根據 DbProviderFactory 動態生成 SQL。
  3. 避免在 SQL 中使用 VB 專用函數 (CStr, IIf 等),改用標準 SQL (CAST, CASE)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved