UPDATE和REPLACE字符串的一部分

ast*_*_zh 392 sql sql-server string replace sql-server-2008

我有一个有两列的表,IDValue.我想在第二列中更改某些字符串的一部分.

表格示例:

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字符串是不必要的.我试着UPDATEREPLACE:

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)

(我也在\替换中添加了,因为我认为你也不需要)

  • 我刚刚找到解决方案:) ===> http://stackoverflow.com/questions/4341613/alternatives-to-replace-on-a-text-or-ntext-datatype (6认同)
  • 等等,`\` 是怎么回事?这不是逃避`'`字符并使这不正确吗? (3认同)

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)


RAS*_*KOV 7

你有一个表,你有日期代码,这是七个字符之类的东西

"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)


Man*_*yen 7

对于任何想要替换您的脚本的人。

update dbo.[TABLE_NAME] set COLUMN_NAME= replace(COLUMN_NAME, 'old_value', 'new_value') where COLUMN_NAME like %CONDITION%

  • **来自审查队列**:我可以请您在源代码周围添加一些上下文。纯代码答案很难理解。如果您可以在帖子中添加更多信息,这将对提问者和未来的读者都有帮助。 (4认同)