我有一个包含两列 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
现在不需要 Value
字符串中的 123\
。我试过 UPDATE
和 REPLACE
:
UPDATE dbo.xxx
SET Value = REPLACE(Value, '%123%', '')
WHERE ID <= 4
当我执行脚本时,SQL Server 不会报告错误,但它也不会更新任何内容。这是为什么?
您不需要在 REPLACE
中使用通配符 - 它只会找到您为第二个参数输入的字符串,因此以下内容应该有效:
UPDATE dbo.xxx
SET Value = REPLACE(Value, '123', '')
WHERE ID <=4
如果要替换的列是类型 text
或 ntext
,您需要将其转换为 nvarchar
UPDATE dbo.xxx
SET Value = REPLACE(CAST(Value as nVarchar(4000)), '123', '')
WHERE ID <=4
尝试删除 %
字符,如下所示
UPDATE dbo.xxx
SET Value = REPLACE(Value, '123', '')
WHERE ID <=4
为了使查询在不需要更新每一行的大表中运行得更快,您还可以选择只更新将被修改的行:
UPDATE dbo.xxx
SET Value = REPLACE(Value, '123', '')
WHERE ID <= 4
AND Value LIKE '%123%'
询问:
UPDATE tablename
SET field_name = REPLACE(field_name , 'oldstring', 'newstring')
WHERE field_name LIKE ('oldstring%');
您有一张桌子,其中有七个字符的日期代码,例如
"32-1000"
现在你想全部替换
"32-"
和
"14-"
您必须运行的 SQL 查询是
Update Products Set Code = replace(Code, '32-', '14-') Where ...(Put your where statement in here)
对于任何想要替换您的脚本的人。
update dbo.[TABLE_NAME] set COLUMN_NAME= replace(COLUMN_NAME, 'old_value', 'new_value') where COLUMN_NAME like %CONDITION%
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
您应该使用以下更新查询
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
上述任何一个查询都应该有效。
替换波斯语单词
UPDATE dbo.TblNews
SET keyWords = REPLACE(keyWords, '-', N'،')
help: dbo.TblNews -- 表名
关键字——字段名
不定期副业成功案例分享
`? isn't that escaping the
'` 字符是怎么回事?