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

时间:2017-04-05 17:59:02

标签: sql-server replace trim

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

本声明

SELECT FullName AS类别 来自dbo.inventory

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

  • 零件 - 腰带:Z.360J8
  • 零件 - 腰带:Z.360J14
  • 零件 - 腰带:Z.36355-123
  • 零件 - 塑料与塑料帧:Z.103196-001
  • 零件 - 电缆/电线:Z.P037153674

我想删除破折号之前删除“部件 - ”以及跟踪冒号的所有内容:''所以我只能留下类别并获得这样的表:

  • 皮带
  • 皮带
  • 皮带
  • 塑料与塑料帧
  • 电缆/电线

我试过这个并成功删除了前面的“部件 - ”但是成功地将语句与删除冒号之后的所有内容结合起来“:”

SELECT LTRIM(RTRIM(REPLACE(FullName,'Parts - ','')))AS类别 来自dbo.inventory

产生这个结果:

  • 腰带:Z.360J8
  • 腰带:Z.360J14
  • 腰带:Z.36355-123
  • 塑料与塑料帧:Z.103196-001
  • 电缆/电线:Z.P037153674

谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

使用LEFT&amp ;;的方法CHARINDEX:

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

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

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

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

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