我在表中有一个字段,其中包含我想删除的前导和尾随字符。
本声明
SELECT FullName AS类别 来自dbo.inventory
在表中生成此结果(显示部分结果):
我想删除破折号之前删除“部件 - ”以及跟踪冒号的所有内容:''所以我只能留下类别并获得这样的表:
我试过这个并成功删除了前面的“部件 - ”但是成功地将语句与删除冒号之后的所有内容结合起来“:”
SELECT LTRIM(RTRIM(REPLACE(FullName,'Parts - ','')))AS类别 来自dbo.inventory
产生这个结果:
谢谢你的帮助!
答案 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 - ', ''), ':', '')