在sql中的特殊字符之前和之后替换

时间:2014-03-31 16:55:54

标签: sql

我的情况如下

我有一个项目列表,您需要删除一些不必要的东西

是一个例子

4-Starred Ladybug of Doom RP 02-EN022

我需要在连字符之前删除4个字母 - 在

之后删除5个字母

你可能想知道为什么他不会倒退

UPDATE mytable  
SET column = LEFT (column, LEN (column) -10)

还有其他部分在4之前有3个

但是中间的所有人都有-

我感谢帮助

我需要这个结果:

 4-Starred Ladybug of Doom

1 个答案:

答案 0 :(得分:0)

根据您的问题回答有几个问题。在你的例子中

4-Starred Ladybug of Doom RP 02-EN022

你说在-和之前4之后删除5。在那种情况下,结果将是

4-Starred Ladybug of Doom R

为了符合您的结果,我可以这样做

DECLARE @something VARCHAR(50) ='4-Starred Ladybug of Doom RP 02-EN022'

SELECT LEFT(@something,LEN(@something) - (CHARINDEX('-',REVERSE(@something),0)+6))

但这只适用于-之前要删除的6个字符。使用字符串时,空格被视为1个字符,因此在您的情况下,您需要删除4个字母和2个空格。

此代码将保留最后2个空格之前的所有内容。

DECLARE @something VARCHAR(50) ='4-Starred Ladybug of Doom RP 02-EN022'
SELECT LEFT(@something,LEN(@something) - CHARINDEX(' ',REVERSE(@something),CHARINDEX(' ',REVERSE(@something))+1))