【问题标题】:Why does t-sql's LEN() function ignore the trailing spaces?为什么 t-sql 的 LEN() 函数会忽略尾随空格?
【发布时间】:2012-02-24 09:27:33
【问题描述】:

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

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

相关:

【问题讨论】:

标签: tsql


【解决方案1】:

由于数据类型长度,它修复了字符串的自动填充。考虑以下几点:

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) ); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-11
      • 2014-05-20
      • 1970-01-01
      相关资源
      最近更新 更多