为什么t-sql的LEN()函数会忽略尾随空格?

Çağ*_*kin 6 t-sql

MSDN上LEN()函数的说明:返回指定字符串表达式的字符数,不包括尾随空格.

为什么LEN()函数设计为以这种方式工作?这种行为解决了什么问题?

相关:

Gar*_*thD 6

它修复了由于数据类型长度而导致的字符串自动填充.考虑以下:

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会删除尾随空白.有一些解决方法/替代方案,这不是必需的行为.