【发布时间】:2009-04-03 21:34:32
【问题描述】:
我有一个表,其中有一列我想更新它的值。以下是 TSQL 代码示例:
WITH Pieces(id, newdesc) AS
(
SELECT itemid, REPLACE(REPLACE(description, 'DESC_A', 'DESC_B'), 'NEW_1', 'NEW_2')
FROM myTable
WHERE description like '%DESC_A%DESC_B%'
)
-- SELECT * FROM Pieces
UPDATE myTable SET description = newdesc // not working, how?
此更新不起作用。通过注释掉 SELECT,我可以看到结果是我需要的。如何以批量方式对一组行进行此更改?不确定 WITH 语句是否可行?
以下是一些示例数据:
....
xxxDESC_AyyyDESC_Bwwww
aaaDESC_AxxDESC_Beee
....
更新的将是:
....
xxxNEW_1yyyNEW_2wwww
aaaNEW_1xxNEW_2eee
....
【问题讨论】:
-
我可以定义一个 Table 变量并将值插入 WITH 语句,然后循环通过 myTable 进行更新。是否可以仅使用 WITH 语句?
-
列名“newdesc”无效。
-
如果你做一个 SELECT id,newdesc(而不是更新)它工作正常吗?
-
大卫,你检查我的答案了吗?
标签: sql sql-server-2005 tsql