MSDN上LEN()函数的说明:返回指定字符串表达式的字符数,不包括尾随空格.
为什么LEN()函数设计为以这种方式工作?这种行为解决了什么问题?
相关:
它修复了由于数据类型长度而导致的字符串自动填充.考虑以下:
DECLARE @Test CHAR(10), @Test2 CHAR(10)
SET @Test = 'test'
SET @Test2 = 'Test2'
SELECT LEN(@Test), LEN(@Test + '_') - 1, LEN(@Test2), LEN(@Test2 + '_') - 1
Run Code Online (Sandbox Code Playgroud)
这将分别返回4,10,5和10.即使没有尾随空格被用于@Test,它仍然保持着它的长度10.如果len不剪裁尾随空格,则LEN(@test)和LEN(@Test2)将是相同的.通常人们会想知道有意义数据的长度,而不是自动填充的长度,因此LEN会删除尾随空白.有一些解决方法/替代方案,这不是必需的行为.