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

SQL Server DATALENGTH 函數完全指南:位元組長度精準計算

     編輯:關於SqlServer

DATALENGTH 函數深度解析:變長資料類型儲存大小的精準測量

DATALENGTH 回傳任意運算式實際佔用的 位元組數,而非字元數。這對變長類型 (varchar, varbinary, nvarchar, text, image 等) 極具價值,是計算儲存成本、驗證資料完整性、優化欄位長度的關鍵工具。

語法與回傳值

DATALENGTH ( expression )
-- 回傳類型: int
-- NULL 輸入回傳 NULL

核心應用場景

場景說明範例
計算實際儲存大小varchar/nvarchar 實際位元組數,含雙位元組字元DATALENGTH(N'中文') = 6 (UTF-16)
驗證二進位資料完整性varbinary/image 檔案大小檢查WHERE DATALENGTH(Photo) > 1048576 -- 超過 1MB
欄位長度優化分析統計最大/平均位元組數,決定 varchar(n) 最佳 nSELECT MAX(DATALENGTH(Email)) FROM Users
比較 CHAR vs VARCHAR 空間CHAR 固定長度,DATALENGTH 總 = 定義長度CHAR(10) 存 'abc' → DATALENGTH = 10

實戰範例:出版社名稱長度分析

USE pubs;
GO
SELECT 
    DATALENGTH(pub_name) AS ByteLength,
    pub_name
FROM publishers
ORDER BY pub_name;
GO

輸出結果

ByteLength  pub_name
----------- ----------------------------------------
20          Algodata Infosystems
16          Binnet & Hardley
21          Five Lakes Publishing
5           GGG&G
18          Lucerne Publishing
14          New Moon Books
17          Ramona Publishers
14          Scootney Books

關鍵差異:DATALENGTH vs LEN

函數單位尾端空白適用類型
DATALENGTH位元組包含所有類型 (含二進位)
LEN字元不包含字串類型 (非 text/ntext/image)

版本與相容性注意

  • 相容等級 (sp_dbcmptlevel) 可能影響某邊緣行為
  • SQL Server 2019+ 建議搭配 DATALENGTH + COL_LENGTH 做結構描述分析

最佳實務建議

  1. 儲存空間評估:定期跑 SELECT SUM(DATALENGTH(大欄位)) FROM 大表 監控增長趨勢
  2. 資料清洗:找出異常長度資料 WHERE DATALENGTH(欄位) > 預期上限
  3. 避免誤用:切勿用於字元計數,中文環境務必改用 LEN 或 CHARINDEX 邏輯
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved