SQL删除某些varchar值或单词后的所有内容

时间:2014-05-21 16:33:19

标签: sql sql-server sql-server-2008 sql-server-2008-r2 sql-server-2012

我找到了如何删除某些字符后,但是如何在SQL DEV 2012中的某些单词后删除?

假设我有一个名为MyTable的表,此列是MyTextColumn,其中包含

我的名字是Peter the Developer,这部分需要删除。

所以当它找到'Peter the Developer'时,删除Peter the Developer及其后的其余内容,唯一剩下的就是'我的名字是'

由于

 UPDATE MyTable
 SET MyText = LEFT(MyText, CHARINDEX(';', MyText) - 1)
 WHERE CHARINDEX(';', MyText) > 0

更新:

由于我的问题是删除意义更新,这是我从下面的回复中创建的,以使其工作。

update myTable
set myTextColumn = SUBSTRING(myTextColumn , 0 , CHARINDEX('Peter the developer', myTextColumn, 0))
where ID = 2

4 个答案:

答案 0 :(得分:1)

实施例

declare @Seed nvarchar(32) =  'is '
declare @String nvarchar(128) = 'My Name is Peter'

select Left(@String,PATINDEX('%'+@Seed+'%',@String)+len(@seed))

你的案子'

declare @Seed nvarchar(32) =  ';'

UPDATE MyTable
 SET MyText = Left(MyText,PATINDEX('%'+@Seed+'%',MyText)+len(@seed))
 WHERE PATINDEX('%'+@Seed+'%',MyText) > 0

答案 1 :(得分:1)

DECLARE @text varchar(max) = 'My name is peter'   

UPDATE MyTable
SET MyText = SUBSTRING(@text,0,CHARINDEX('peter',@text,0))

这样的事情应该有所帮助

输出将是

我的名字是

答案 2 :(得分:1)

您可以使用charindex查找多个字符,所以:

select left(MyTextColumn,charindex('Peter the Developer',MyTextColumn,1)-1
from 
MyTable

SQL Fiddle

答案 3 :(得分:0)

不完全确定预期结果是什么

如果您希望删除所有内容并保持"我的姓名为",您可以按以下方式执行

declare @Word varchar(100)='My Name is Peter the Developer this part needs to be removed'
declare @Match varchar(100)='Peter the Developer'

SELECT SUBSTRING(@Word , 0 , CHARINDEX(@Match, @Word, 0))

如果你需要保持"我的名字是Peter the Developer"

declare @Word varchar(100)='My Name is Peter the Developer this part needs to be removed'
declare @Match varchar(100)='Peter the Developer'
declare @len int 

set @len = LEN(@Match)

SELECT SUBSTRING(@Word , 0 , CHARINDEX(@Match, @Word, 0)+@len)
相关问题