標籤:blog http ar 使用 sp 資料 div art log
DATALENGTH()函數返回一個用於對值進行管理的位元組數,這有助於揭示不同資料類型間的一些有趣差別。
當把varchar類型傳遞給DATALENGTH()和LEN()函數時,它們將返回相同的值:
DECLARE @Value varchar(20) SET @Value = ‘abc‘ SELECT DATALENGTH(@Value) SELECT LEN(@Value)
這些語句的傳回值都為3。
因為varchar類型使用了3個單位元組字元來儲存三個字元的值。然而,如果使用nVarchar類型來管理相同長度的值,就要佔用多一倍的位元組:
DECLARE @Value nvarchar(20) SET @Value = ‘abc‘ SELECT DATALENGTH(@Value) SELECT LEN(@Value)
DATALENGTH()函數傳回值為6,因為每個使用Unicode字元集的字元都要佔用2個位元組。
LEN()函數傳回值為3,因為這個函數返回字元數,不是位元組數。
以下是一個有趣的測試:要儲存一個值為2的整型變數,要佔用多少個位元組?而如果要儲存一個值為20億的整型變數,又將佔用多少個位元組呢?試一下:
DECLARE @Value1 int, @Value2 int SET @Value1 = 2 SET @Value2 = 2000000000 SELECT DATALENGTH(@Value1) SELECT LEN(@Value1) SELECT DATALENGTH(@Value2) SELECT LEN(@Value2)
在這兩種情況下,DATALENGTH()函數都返回4。
因為int類型不論值是多少,總是使用4個位元組。
LEN()函數本質上將整型值當成已轉換成字元型的資料來處理,所以,在這個例子中,它分別返回1和10,即值的位元。
原文:http://blog.csdn.net/Hello_World_wusu/article/details/4667452
SQL Server 函數 LEN 與 DATALENGTH的區別