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

7

3
请返回翻译后的文本:https://dev59.com/bm855IYBdhLWcg3wvnKE,http://dba.stackexchange.com/questions/10510/behavior-of-varchar-with-spaces-at-the-end - GSerg
2个回答

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会删除尾随空格。在不需要此行为的情况下,有解决方法/替代方案。

-2

在非变量字段中进行空格填充,比如

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接