LEN:返回指定字符串表達式的字符(而不是字節)數,其中不包含尾隨空格。函數
DATALENGTH:返回用於表示任何表達式的字節數。測試
示例1:(相同,返回結果都爲5): .net
示例2:(不相同,DATALENGTH是LEN的兩倍): code
示例3:(不相同,DATALENGTH是LEN的兩倍多,因爲LEN計算時不包含尾空格): blog
示例4:(不相同,DATALENGTH是LEN的兩倍,因爲LEN計算時不包含尾空格,但包含頭部空格) 字符串
注意:當變量爲null時,LEN,DATALENGTH都爲null get
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億的整型變量,又將佔用多少個字節呢?試一下:select
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,即值的位數。
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/Hello_World_wusu/archive/2009/10/14/4667452.aspx