Sql server 删除前导“;副本;varchar列中的字符串
在我的表格中,我想从Sql server 删除前导“;副本;varchar列中的字符串,sql-server,sql-server-2008,Sql Server,Sql Server 2008,在我的表格中,我想从标题列中删除前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%' 有什么建议吗?这不需要子查询,
标题
列中删除前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%'
有什么建议吗?这不需要子查询,通常也不需要检查长度来计算输出的长度。假设这不是
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%';
或者你可以:
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%';
您需要子字符串函数
update mytable set value = substring ( value, 8, len (value) )
where value like 'copy of%'
实际上,您的查询虽然乍一看并不正确,但它的语法是有效的,并且似乎可以工作。问题是什么?这实际上留下了
f
,因此对于示例数据,您最终得到的是f这是tile1
,而f这是另一个tile2
。