从varchar列中删除前导“Copy of”字符串

时间:2012-07-23 22:47:10

标签: sql-server sql-server-2008

在我的表格中,我想从Title列中删除前7个字符。

我有一个如下表格,我想删除'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%'

有什么建议吗?

2 个答案:

答案 0 :(得分: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%';

如果值为LTRIM(),您可能还想使用'Copy of something'并且您不想要前导空格:

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

答案 1 :(得分:0)

你想要SUBSTRING功能。

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