在使用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
以上,做為參考。