2012-07-23 38 views
0

在我的表中,我想从Title列中删除前7个字符。从varchar列中删除前导的“副本”字符串

我有一个表像之下,我想删除'Copy of'前缀:

Title 
--------------------- 
Copy ofthis is tile1 
Copy ofthis is another tile2 

我尝试这样做:

Update MyTable SET Title=(SELECT RIGHT(Title,LEN(Title)- 7) AS Title) 
    WHERE Title LIKE 'Copy of%' 

有什么建议?

+0

实际上,你有的查询,虽然它看起来不正确乍一看,是有效的语法,似乎工作。问题是什么? – 2012-07-23 23:00:13

回答

0

您不需要为此查询子查询,通常您不需要检查长度以确定输出应该有多长时间。假设这是不是一个varchar(max),你可以这样做:

UPDATE dbo.MyTable 
    SET Title = SUBSTRING(Title, 8, 8000) 
    WHERE Title LIKE 'Copy of%'; 

或者你可以这样做:

UPDATE dbo.MyTable 
    SET Title = STUFF(Title, 1, 7, '') 
    WHERE Title LIKE 'Copy of%'; 

您可能还需要在情况下,值是'Copy of something'使用LTRIM()和你不想一个主导空间:

UPDATE dbo.MyTable 
    SET Title = LTRIM(STUFF(Title, 1, 7, '')) 
    WHERE Title LIKE 'Copy of%'; 
0

您想要SUBSTRING功能。

update mytable set value = substring (value, 8, len (value)) 
where value like 'copy of%' 
+0

这实际上留下了'f',所以你最终得到的样本数据是'fthis是tile1','fthis是另一个tile2'。 – 2012-07-23 23:04:55

+0

好点。编辑 – podiluska 2012-07-24 05:02:13