【问题标题】:SQL Server : RTRIM not working to remove empty spacesSQL Server:RTRIM 无法删除空格
【发布时间】:2018-10-24 19:30:07
【问题描述】:

我的表中的一个列值在每个字符串的末尾都有空格。

在我的选择查询中,我试图修剪字符串末尾的空格,但值没有被修剪。

SELECT
    EmpId, RTRIM(Designation) AS Designation, City 
FROM
    tblEmployee

这不是修剪空白空间,不仅仅是这个,甚至LTRIM(RTRIM(Designation) AS Designation 也不起作用。

我也试过了

CONVERT(VARCHAR(56), LTRIM(RTRIM(Designation))) AS [Designation]

没有任何东西会修剪字符串末尾的空白空间...

任何帮助表示赞赏

编辑

感谢 cmets 中的建议,我使用 ASCII() 检查了列中的最后一个值。是160non-breaking space

我怎样才能删除这个不间断的空间?

【问题讨论】:

  • 是什么让您认为空间没有被修剪?您需要展示发生这种情况的可重现示例。
  • 是什么让你认为没有被修剪的字符是空格?
  • @MartinSmith 的意思是(这很重要)你确定它们不是 CR、LF、TAB 等吗?
  • 为了提供帮助,请在有 空格 的行上运行此命令,然后让我们知道结果。 select ascii(right(YourColumn,1)) from YourTable
  • @scsimon 非常感谢

标签: sql-server trim


【解决方案1】:

我怎样才能删除这个不间断的空间?

只需将其替换为'' 并使用CHAR() 函数作为

SELECT REPLACE(YourColumn, CHAR(160), '')
FROM YourTable;

【讨论】:

    【解决方案2】:

    由于该值可以包含不间断空格,因此您需要在进行修剪之前将其替换为常规空格:

    SELECT
        EmpId, RTRIM(REPLACE(Designation,char(160),' ')) AS Designation, City 
    FROM
        tblEmployee
    

    【讨论】:

      【解决方案3】:

      我遇到了类似的问题,使用下面的脚本删除空格,以防修剪功能不起作用 -

      SELECT LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(REPLACE([ColumnName], CHAR(10), 
      CHAR(32)),CHAR(13), CHAR(32)),CHAR(160), CHAR(32)),CHAR(9),CHAR(32))))
      FROM [TableName]
      

      欲了解更多信息,请访问此页面 - http://www.ashishblog.com/trim-not-removing-spaces-in-sql/

      【讨论】:

        猜你喜欢
        • 2018-04-11
        • 2023-03-18
        • 1970-01-01
        • 1970-01-01
        • 2016-06-03
        • 1970-01-01
        • 1970-01-01
        • 2021-05-09
        • 2020-10-15
        相关资源
        最近更新 更多