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

SQL Server DATALENGTH 函數完整說明:取得運算式實際位元組長度

     編輯:關於SqlServer

語法

DATALENGTH ( expression )

參數與回傳

  • expression:任意型別運算式。
  • 回傳 INT:儲存該運算式所佔用的位元組數。
  • 若運算式為 NULL,回傳 NULL。

適用場景

特別適合可變長度資料型別:

  • `VARCHAR` / `VARBINARY`
  • `NVARCHAR` (每字元 2 位元組)
  • `TEXT` / `NTEXT` / `IMAGE` (大型物件)
  • `SQL_VARIANT` / `XML`

固定長度型別 (`CHAR`, `NCHAR`, `INT`, `DATETIME` 等) 回傳定義長度,較無參考價值。

相容性等級影響

資料庫相容性等級 (`sp_dbcmptlevel`) 可能影響某些型別的回傳值,升級/遷移時請實測驗證。

實用範例


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

結果集


ByteLen  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

進階應用

1. 偵測尾端空白


-- CHAR(20) 欄位實際內容 'ABC' 佔 3 字元,但 DATALENGTH 回傳 20
-- 若用 VARCHAR(20) 則回傳 3
SELECT DATALENGTH(col_char), DATALENGTH(col_varchar) FROM test_table

2. 計算 NVARCHAR 實際字元數


SELECT DATALENGTH(ncol) / 2 AS CharCount FROM test_table

3. 判斷大型物件大小


SELECT DATALENGTH(image_col) / 1024.0 AS SizeKB FROM documents

對比:LEN vs DATALENGTH

函數回傳尾端空白NULL 處理適用型別
LEN字元數 (不含尾端空白)忽略NULL字串型別
DATALENGTH位元組數 (含尾端空白)計入NULL所有型別
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved