我想在SQL Server中将'@sadim Hi, blah blah blah'
更改为'Hi, blah blah blah'。
我使用此查询,但它不起作用:
update mytable
set ttext = REPLACE(ttext, '@% ' , '');
update stack
set name = SUBSTRING(name,CHARINDEX(' ',name),LEN(name));
这将允许您跳过@Username部分,因为字符串以 @username 之后获取子字符串这里堆栈是你的表,名称是你的列名
来到正则表达式部分 请看一下这个
https://dba.stackexchange.com/questions/162816/sql-server-replace-with-wildcards
如果字符串中间存在@username,请使用以下命令:
update stack
set name =
case
when name like '@%' then SUBSTRING(name,CHARINDEX(' ',name),LEN(name))
when name like '%@%' then CONCAT(
SUBSTRING(name,0,CHARINDEX('@',name)-1),
SUBSTRING(SUBSTRING(name,CHARINDEX('@',name),LEN(name)),
CHARINDEX(' ',
SUBSTRING(name,CHARINDEX('@',name),LEN(name))),
LEN(
SUBSTRING(name,CHARINDEX('@',name),LEN(name))
)
)
)
end
使用以下更新查询
update mytable
set ttext = (select substring(ttext,charindex(' ',ttext)+1,len(ttext) - charindex(' ',ttext)));