【问题标题】:Trying to Remove Leading and Trailing Spaces using Trim but its not Working尝试使用 Trim 删除前导和尾随空格但它不起作用
【发布时间】:2021-11-21 09:34:06
【问题描述】:

我试过了

update Table_Name set Name=Trim(Name)

但它不起作用..我要删除前导和尾随空格的字符串如下:

'  % of critical assets, that should be monitored via PdM technologies, are being monitored '

当前位于我的表中名为 Name 的列中

【问题讨论】:

  • "Works fine on my machine." 花时间为我们提供完整的minimal reproducible example
  • 可能不是空格...制表符或其他看起来像空格的东西。
  • 尝试查看字符串的不同表示形式,例如Convert(VarBinary, Name) 将为您提供十六进制视图。正常的 ASCII 空格应该显示为 0x20
  • “不工作”是什么意思?您是否收到错误消息,或者没有删除任何字符?
  • 您是否检查过这些是“空白”字符?也许它们是无法显示的控制字符

标签: sql sql-server trim


【解决方案1】:

如果数据类型是 CHAR 或 NCHAR,则不能删除尾随空格。您只能在 VARCHAR/NVARCHAR 上执行此操作

【讨论】:

  • 但它会删除前导空格 - 正如 OP 所希望的并且在单个样本中表示。
【解决方案2】:

尝试使用

update Table_Name set Name=LTRIM(RTRIM(Name)) 

而不是TRIM

【讨论】:

  • 默认情况下,TRIM 函数会从字符串的开头和结尾删除空格字符。此行为等效于 LTRIM(RTRIM(@string))。 所以你的答案与 OP 使用的相同。
  • 但它只适用于2017版本,可能他使用的是旧版本? docs.microsoft.com/en-us/sql/t-sql/functions/…
  • 那么他会抱怨 'trim' is not a known built-in function name. 直到 OP 澄清“它不工作”是什么意思,这个答案是没有用的.
  • 当 TRIM 不起作用时,为什么这会起作用?
猜你喜欢
  • 1970-01-01
  • 2019-08-22
  • 2022-10-04
  • 1970-01-01
  • 2018-10-02
  • 2012-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多