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

SQL Server 2005 新世代大值資料類型:VARCHAR(MAX)、NVARCHAR(MAX)、VARBINARY(MAX)

     編輯:關於SqlServer

舊有痛點

SQL Server 2000 僅支援 VARCHAR(8000),超過 8KB 必須用 TEXT/IMAGE。但 TEXT 不支援 REPLACE、SUBSTRING、CHARINDEX 等字串函數,更新局部內容需使用晦澀的 READTEXT/WRITETEXT/UPDATETEXT,開發極不便。

MAX 類型突破

  • VARCHAR(MAX)、NVARCHAR(MAX)、VARBINARY(MAX) 最高 2 GB,相容所有內建字串/二進位函數。
  • 宣告簡單:DECLARE @BigString VARCHAR(MAX); SET @BigString = 'abc';
  • 可自由傳遞給 REPLACE、LEFT、SUBSTRING 等函數。

相容性陷阱

指定長度類型(如 VARCHAR(4001))不會自動升級 為 MAX。串連時若兩邊皆為指定長度,結果仍受 8000 限制:

DECLARE @S1 VARCHAR(4001) = REPLICATE('1',4001);
DECLARE @S2 VARCHAR(4001) = REPLICATE('2',4001);
SELECT LEN(@S1 + @S2);  -- 8000,非 8002

修正:任一邊宣告為 VARCHAR(MAX) 或 CAST(@S1 AS VARCHAR(MAX)),優先規則會將結果型別提升為 MAX,得到正確長度 8002。

遷移建議

  • 新專案直接採用 MAX 類型替代 TEXT/IMAGE。
  • 舊系統逐步 ALTER COLUMN 轉換,並修改相關預存程序移除 UPDATETEXT 邏輯。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved