在使用t-sql的LEN function時,發現了一個有趣的現象。
如下所示,

DECLARE @str1 NVARCHAR(20), @str2 NVARCHAR(20)
SET @str1 = '123456789   '
SET @str2 = '  123456789  '

SELECT LEN(@str1) --結果為9
SELECT LEN(@str2) --結果為11

找了文件(http://msdn.microsoft.com/en-us/library/ms190329.aspx)
之後發現,LEN在計算字元數目時,會將尾端的空白去掉。

但我需要知道是整個字串包含空白的字元數,
於是找到了一個名為DATALENGTH的函式。

http://msdn.microsoft.com/en-us/library/ms173486(v=SQL.90).aspx

在使用的時候需要注意,因為它是回傳BYTES的數目,
所以如果字元是UNICODE,需要把結果除以2。

DECLARE @str1 NVARCHAR(20), @str2 NVARCHAR(20)
SET @str1 = '123456789   '
SET @str2 = '  123456789  '

SELECT DATALENGTH(@str1) --結果為24
SELECT DATALENGTH(@str2) --結果為26

SELECT DATALENGTH(@str1) / 2 --結果為12
SELECT DATALENGTH(@str2) / 2 --結果為13

以上,做為參考。