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

时间:2012-02-24 09:27:34

标签: tsql

Description of LEN() function on MSDN:返回指定字符串表达式的字符数,不包括尾随空白

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

相关:

2 个答案:

答案 0 :(得分: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

这将分别返回4,10,5和10。即使没有为@Test使用尾随空格,它仍然保持其长度为10.如果LEN没有修剪尾随空格,那么LEN(@test)LEN(@Test2)将是相同的。通常人们会想知道有意义数据的长度,而不是自动填充的长度,因此LEN会删除尾随空白。有一些解决方法/替代方案,这不是必需的行为。

答案 1 :(得分:-1)

非变量fiels中的空格填充,如

CREATE TABLE tblSomething ( variable_length varchar(20), non_var_lenght char(10) );