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

Combining LTRIM and RTIM and REPLACE functions in MSSQL

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

本声明

SELECT 全名 AS 类别 来自 dbo.inventory

在 table 中产生此结果(显示部分结果):

我想删除破折号之前的破折号,这将删除 "Parts - " 和冒号 ':' 后面的所有内容,这样我就可以只剩下类别并得到这样的 table :

我试过这个并成功删除了前面的 "Parts -" 但成功地将语句与冒号“:”之后的所有内容删除“:”

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

产生这个结果:

感谢您的帮助!

使用 LEFT 和 CHARINDEX 的方法:

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

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

LTRIM 和 RTRIM 仅分别删除 leading/trailing space,因此它们在这里没有用。

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

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