我在表中有一个字段,其中包含要删除的前导字符和尾随字符。
本声明
选择全名 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 - ', ''), ':', '')