【问题标题】:Removing trailing spaces and whitespaces from SQL Server column从 SQL Server 列中删除尾随空格和空格
【发布时间】:2017-05-21 18:13:53
【问题描述】:

我的 SQL Server 数据库中有一个列,它在记录的左右两侧都有空格。基本上它是一个nvarchar(250) 列。

我尝试过像这样完全删除空格:

UPDATE MyTable 
SET whitespacecolumn = LTRIM(RTRIM(whitespacecolumn)) 

但这根本没有解决,空白仍然存在。我在这里做错了什么?

【问题讨论】:

  • 空格是什么字符?修剪只删除空格。不是制表符或其他类型的空白。
  • 我不确定它们是哪种字符,但记录前面有一个空格,如下所示:(此处为空格)用户名
  • @MartinSmith 如何删除标签/输入?
  • 您需要知道它们在特定编码中用什么数字表示。例如在 UTF-8 中,13 数字是空格,那么您可以将其替换为 REPLACE(col, char(13), '')。由于我不确定编码(肯定是 UTF-8),我建议您自己尝试一下。
  • @MichałTurczyn 这与更新声明一起使用?

标签: sql sql-server tsql record trim


【解决方案1】:

检查以下内容;

  1. 在字段值中查找任何特殊字符,例如 char(10)、char(13) 等。
  2. 检查 ANSI_PADDING ON 的状态。请参考这篇MSDN 文章。

【讨论】:

    【解决方案2】:

    我认为替换是您希望更新的方式

    UPDATE MyTable SET whitespacecolumn = Replace(whitespacecolumn, ' ', '')
    

    您可以尝试先进行选择,然后再进行更新

    SELECT *, Replace(whitespacecolumn, ' ', '') from MyTable
    

    LTRIM、RTRIM 将删除列前后的空格。在 2016 年,您还可以使用如下 TRIM 功能来修剪特殊字符:

    SELECT TRIM( '.,! ' FROM  '#     test    .') AS Result;
    

    输出:

    # test
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 2015-04-27
    • 1970-01-01
    • 2015-02-15
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多