我正在尝试更新列中的所有记录,以便它们以“CD”开头,例如DCE206将成为CDE206。
UPDATE table
SET column = REPLACE(column1, 'DC', 'CD')
WHERE column1 LIKE 'DC%'
我正在使用上述更新语句但是出现以下错误
'子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。'
我是否可以在声明中更改以实现此目的,或者我需要查看使用游标。
我正在使用SQL Server 2000。
答案 0 :(得分:9)
您无法从该代码中获取此错误。错误必须来自其他一些代码。
除了运行更新外,你还有什么吗?触发器?
答案 1 :(得分:2)
您发布的声明不会生成该错误:它没有子查询。
答案 2 :(得分:0)
这似乎在我身边很好,2005年。这是一批查询的一部分,或许另一个更新导致此消息?
编辑:在SQL 2000上执行此操作,没有错误。
create table table1 (id int identity, column1 varchar(10))
insert into table1 values ('DCE1')
insert into table1 values ('DCE2')
insert into table1 values ('DCE3')
insert into table1 values ('DCE4')
insert into table1 values ('DCE5')
UPDATE table1
SET column1 = REPLACE(column1, 'DC', 'CD')
WHERE column1 LIKE 'DC%'
select * from table1
drop table table1
答案 3 :(得分:0)
你似乎有一个错字。它应该是:
“SET column1 =”
而不是
“SET column =”
(缺少'1')
答案 4 :(得分:0)
如果您从简单的UPDATE收到错误,那么很可能您在表上有一个UPDATE触发器,错误来自触发器。
但是,您发布的代码肯定不是您遇到问题的代码,因为“table”是一个关键字,不能是您要更新的表的名称。