UPDATE和REPLACE字符串的一部分

时间:2013-06-28 12:55:07

标签: sql sql-server string sql-server-2008 replace

我的桌子有两列,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不会报告错误,但它也不会更新任何内容。那是为什么?

11 个答案:

答案 0 :(得分:595)

REPLACE中不需要通配符 - 它只是找到您为第二个参数输入的字符串,因此以下内容应该有效:

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

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

答案 1 :(得分:48)

尝试删除%字符,如下所示

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

答案 2 :(得分:33)

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

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

答案 3 :(得分:12)

查询:

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

答案 4 :(得分:7)

你有一张桌子,你有日期代码七个字符,如

"32-1000"

现在你要替换所有

"32-"

使用

"14-"

您必须运行的SQL查询是

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

答案 5 :(得分:2)

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

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

答案 6 :(得分: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

以上任一查询都应该有效。

答案 7 :(得分:0)

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 

答案 8 :(得分:-1)

尝试一下:

UPDATE dbo.tbl_example
SET section = REPLACE(section, 'RafSeparator', '@')

答案 9 :(得分:-1)

替换波斯语

UPDATE dbo.TblNews
SET keyWords = REPLACE(keyWords, '-', N'،')

帮助: dbo.TblNews-表名

keyWords-档名

答案 10 :(得分:-1)

UPDATE table_name
SET field_name = '0'
WHERE field_name IS Null