代码之家  ›  专栏  ›  技术社区  ›  SqlRyan

在SQL Server VARCHAR列中插入尾随空格

  •  7
  • SqlRyan  · 技术社区  · 14 年前

    我试图在VARCHAR(50)列中插入尾随空格,而SQL insert似乎正在切断它们。这是我的密码:

    create table #temp (field varchar(10));
    insert into #temp select ' ';
    select LEN(field) from #temp;
    

    不幸的是,这返回的长度为零,这意味着“”已作为“”插入。我需要一个空白的空间来插入这个专栏-有什么想法吗?

    3 回复  |  直到 14 年前
        1
  •  11
  •   OMG Ponies    14 年前

    使用 DATALENGTH ,不是 LEN ,因为LEN不处理空格。

    SELECT LEN(' ') AS len, 
           DATALENGTH(' ') AS datalength
    

    结果:

    len   datalength
    -----------------
    0     1
    
        3
  •  1
  •   Gennady Vanin Геннадий Ванин Mikael Svenson    14 年前

    您最好还知道,sqlserver遵循ANSI/isosql-92对比较中使用的字符串进行填充,以便它们的长度在比较之前匹配。因此,您可能需要使用LIKE谓词进行比较[1]

    [1]
    SQL Server如何比较字符串和尾随空格
    http://support.microsoft.com/kb/316626