代碼
DECLARE @a NVARCHAR(20),
@b NVARCHAR(20),
@c NVARCHAR(20)
SET @a = 'abc'
SET @b = ' abc'
SET @c = 'abc '
SELECT LEN(@a) AS [LEN],DATALENGTH(@a) AS [DATALENGTH] --3,6
SELECT LEN(@b) AS [LEN],DATALENGTH(@b) AS [DATALENGTH] --4,8
SELECT LEN(@c) AS [LEN],DATALENGTH(@c) AS [DATALENGTH] --3,8
Len()返回指定字串運算式的字元數,其中不包含尾隨空格
DataLength() 返回用於表示任何錶達式的位元組數。
但是我還發現了以下的一些問題:
代碼
DECLARE @d VARCHAR(20),--可變長度,非 Unicode 字元資料。
n 的取值範圍為 1 至 8,000。
max 指示最大儲存大小是 2^31-1 個位元組。儲存大小是輸入資料的實際長度加 2 個位元組。所輸入資料的長度可以為 0 個字元
@e NCHAR(20),--
n 個字元的固定長度的 Unicode 字元資料。
n 值必須在 1 到 4,000 之間(含)。儲存大小為兩倍
n 位元組。
@f CHAR(20)--固定長度,非 Unicode 字元資料,長度為
n 個位元組。
n 的取值範圍為 1 至 8,000,儲存大小是
n 個位元組
SET @d = 'abc'
SET @e = 'abc'
SET @f = 'abc'
SELECT LEN(@d) AS [LEN],DATALENGTH(@d) AS [DATALENGTH] --3,3
SELECT LEN(@e) AS [LEN],DATALENGTH(@e) AS [DATALENGTH] --3,40
SELECT LEN(@f) AS [LEN],DATALENGTH(@f) AS [DATALENGTH] --3,20
對於這三種類型,DataLength返回的結果,我真是一頭霧水,請高人指點。謝謝!