ast*_*_zh 392 sql sql-server string replace sql-server-2008
我有一个有两列的表,ID和Value.我想在第二列中更改某些字符串的一部分.
表格示例:
ID Value
---------------------------------
1 c:\temp\123\abc\111
2 c:\temp\123\abc\222
3 c:\temp\123\abc\333
4 c:\temp\123\abc\444
Run Code Online (Sandbox Code Playgroud)
现在,123\中Value字符串是不必要的.我试着UPDATE和REPLACE:
UPDATE dbo.xxx
SET Value = REPLACE(Value, '%123%', '')
WHERE ID <= 4
Run Code Online (Sandbox Code Playgroud)
当我执行脚本时,SQL Server不会报告错误,但它也不会更新任何内容.这是为什么?
Jon*_*ton 648
您不需要通配符REPLACE- 它只是找到您为第二个参数输入的字符串,因此以下内容应该有效:
UPDATE dbo.xxx
SET Value = REPLACE(Value, '123\', '')
WHERE ID <=4
Run Code Online (Sandbox Code Playgroud)
(我也在\替换中添加了,因为我认为你也不需要)
Rob*_*ert 51
尝试删除%字符如下
UPDATE dbo.xxx
SET Value = REPLACE(Value, '123', '')
WHERE ID <=4
Run Code Online (Sandbox Code Playgroud)
xin*_*nux 36
为了使查询在不需要更新每一行的大表中运行得更快,您还可以选择仅更新将被修改的行:
UPDATE dbo.xxx
SET Value = REPLACE(Value, '123', '')
WHERE ID <= 4
AND Value LIKE '%123%'
Run Code Online (Sandbox Code Playgroud)
小智 12
查询:
UPDATE tablename
SET field_name = REPLACE(field_name , 'oldstring', 'newstring')
WHERE field_name LIKE ('oldstring%');
Run Code Online (Sandbox Code Playgroud)
你有一个表,你有日期代码,这是七个字符之类的东西
"32-1000"
Run Code Online (Sandbox Code Playgroud)
现在你想要全部替换
"32-"
Run Code Online (Sandbox Code Playgroud)
同
"14-"
Run Code Online (Sandbox Code Playgroud)
您必须运行的SQL查询是
Update Products Set Code = replace(Code, '32-', '14-') Where ...(Put your where statement in here)
Run Code Online (Sandbox Code Playgroud)
对于任何想要替换您的脚本的人。
update dbo.[TABLE_NAME] set COLUMN_NAME= replace(COLUMN_NAME, 'old_value', 'new_value') where COLUMN_NAME like %CONDITION%