在 MSSQL 中组合 LTRIM 和 RTIM 和 REPLACE 函数



我在表中有一个字段,其中包含要删除的前导字符和尾随字符。

本声明

选择全名 AS 类别 来自 dbo.inventory

在表格中生成此结果(显示部分结果):

  • 零件 - 皮带:Z.360J8
  • 零件 - 皮带:Z.360J14
  • 零件 - 皮带:Z.36355-123
  • 零件 - 塑料和框架:Z.103196-001
  • 零件 - 电缆/电线:Z.P037153674

我想删除破折号前面的破折号,这将删除"部件 - "和冒号":"后面的所有内容,这样我就可以只留下类别并得到这样的表格:

  • 塑料和框架
  • 电缆/电线

我已经尝试过并成功删除了前面的"部件-",但成功地将该语句与删除冒号":"之后的所有内容结合起来

选择 LTRIM(RTRIM(REPLACE(FULLNAME, 'PARTS -', ''))) 作为类别 来自 dbo.inventory

生成以下结果:

  • 皮带:Z.360J8
  • 皮带:Z.360J14
  • 皮带:Z.36355-123
  • 塑料和框架:Z.103196-001
  • 电缆/电线:Z.P037153674

感谢您的帮助!

使用 LEFT 和 CHARINDEX 的方法:

SELECT REPLACE(LEFT(FullName, CHARINDEX(':', FullName) - 1), 'Parts - ', '')

CHARINDEX 在完整字符串中查找冒号字符的索引号,也包含 -1 以将其删除。然后,LEFT 将字符串截断到该位置。REPLACE 的功能与原始示例中相同,删除了"部件 - ' 部分(请注意,我在连字符后面添加了空格)。

LTRIM 和 RTRIM 仅分别删除前导/尾随空格,因此它们在这里没有用处。

处理不包含冒号的行的代码(将返回一个空白字符串):

SELECT REPLACE(REPLACE(LEFT(Fullname, CHARINDEX(':', Fullname)), 'Parts - ', ''), ':', '')

最新更新