【问题标题】:Trailing spaces cant be removed in WHERE clause?在 WHERE 子句中不能删除尾随空格?
【发布时间】:2019-07-14 05:24:06
【问题描述】:

我需要列出 column_A 和 column_B 中的一些记录都是 char(10) 类型的记录。但问题是 Column_A 中有尾随空格,即使两列具有相同的数据但无法匹配。

我尝试 LTRIM(RTRIM(column_A)), REPLACE(column_A, CHAR(32) , '') 等,但它们都不起作用。 有人可以建议任何其他方法来解决这个问题。

注意:上面提到的方法在SELECT子句中都是正常的。

提前致谢。

【问题讨论】:

  • 样本数据最好使用DDL + DML。请edit您的问题包括它,您当前的尝试和您想要的结果。更多详情,read this.
  • SQL Server 在进行比较时通常会忽略尾随空格。你能举个例子说明什么不起作用吗?
  • 你确定这是一个尾随空格而不是另一个看不见的字符吗?
  • ASCII(RIGHT(column_A,1)) 返回什么?如果不是32,那不是你的尾随空格。
  • 是的 Larnu,我已经通过 CAST(column_A AS VARBINARY(MAX)) 验证了它,如果它最后有 2 个空格,则结果为 2020

标签: sql sql-server replace trim


【解决方案1】:

这应该可行:

WHERE LTRIM(RTRIM(COLA)) = LTRIM(RTRIM(COLB))

【讨论】:

  • 。 . . RTRIM 不是 WHERE 子句所必需的。
  • @YogeshSharma OP 提到 尾随空格,所以也不需要 LTRIM,所以 WHERE COLA = COLB 可以工作,但不能。
  • 你所说的是我第一次尝试过滤数据,但它没有按预期工作。为了进一步确认,我已经验证了字符串/数据末尾的字符是几个空格。例如-'ABCD'
猜你喜欢
  • 2015-04-27
  • 1970-01-01
  • 2011-05-09
  • 2015-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多