字符串的UPDATE和REPLACE部分


427

我有一张有两列的表格,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

现在,123\Value字符串是不必要的。我试着UPDATEREPLACE

UPDATE dbo.xxx
SET Value = REPLACE(Value, '%123%', '')
WHERE ID <= 4

当我执行脚本时,SQL Server不会报告错误,但也不会更新任何内容。这是为什么?


8
它不会替代任何内容,因为通配符不被视为通配符,而是文字。
斯图帕

Answers:


700

您不需要在其中使用通配符REPLACE-它只查找您为第二个参数输入的字符串,因此以下内容应适用:

UPDATE dbo.xxx
SET Value = REPLACE(Value, '123\', '')
WHERE ID <=4

(我还在\替换中添加了,因为我假设您也不需要)


1
这炉排工作,但不能与NTEXT类型:( ... >>消息8116,级别16,状态1,行21 -参数的数据类型NTEXT是替换函数的参数1无效。
Owidat

6
我只是找到了解决办法:) ===> stackoverflow.com/questions/4341613/...
Owidat

2
等一下,`? isn't that escaping the '`字符又是什么使它不正确?
Meekohi

这很有帮助
Stanley Okpala Nwosa

如果列类型是文本或ntext这将无法正常工作,看到这个答案stackoverflow.com/questions/4341613/...
阿迪勒·H.·拉扎

55

尝试%如下删除字符

UPDATE dbo.xxx
SET Value = REPLACE(Value, '123', '')
WHERE ID <=4

40

为了使查询在不需要更新每一行的大表中更快地运行,您还可以选择仅更新将要修改的行:

UPDATE dbo.xxx
SET Value = REPLACE(Value, '123', '')
WHERE ID <= 4
AND Value LIKE '%123%'

17

查询:

UPDATE tablename 
SET field_name = REPLACE(field_name , 'oldstring', 'newstring') 
WHERE field_name LIKE ('oldstring%');

完美的查询谢谢
Raju Paladiya

8

您在一张桌子上有日期代码,它是七个字符,例如

"32-1000"

现在您要替换所有

"32-"

"14-"

您必须运行的SQL查询是

Update Products Set Code = replace(Code, '32-', '14-') Where ...(Put your where statement in here)

3

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

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


4
在审核队列中:我可以要求您在源代码周围添加一些上下文。仅代码的答案很难理解。如果您可以在帖子中添加更多信息,它将对提问者和将来的读者都有帮助。
RBT

1
CREATE TABLE tbl_PersonalDetail
(ID INT IDENTITY ,[Date] nvarchar(20), Name nvarchar(20), GenderID int);

INSERT INTO Tbl_PersonalDetail VALUES(N'18-4-2015', N'Monay', 2),
                                     (N'31-3-2015', N'Monay', 2),
                                     (N'28-12-2015', N'Monay', 2),
                                     (N'19-4-2015', N'Monay', 2)

DECLARE @Date Nvarchar(200)

SET @Date = (SELECT [Date] FROM Tbl_PersonalDetail WHERE ID = 2)

Update Tbl_PersonalDetail SET [Date] = (REPLACE(@Date , '-','/')) WHERE ID = 2 

1
请说明您的答案如何解决问题,它将帮助所有人更清楚地了解您的解决方案,以供将来参考。
阿齐兹

1

您应该使用以下更新查询

UPDATE dbo.xxx SET Value=REPLACE(Value,'123\','') WHERE Id IN(1, 2, 3, 4)

UPDATE dbo.xxx SET Value=REPLACE(Value,'123\','') WHERE Id <= 4

以上任一查询均应起作用。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.