使用select语句更新表中所有记录的字段

时间:2011-04-14 18:05:20

标签: sql

以前的开发人员创建了一个表,用于存储服务器中文件的绝对路径。我希望将它们转换为相对路径。

我已经编写了将字符串正确地剥离到相对路径的部分。我的问题是理解如何基本上更新每个记录,使用自己的字符串的新版本。

这是我最初的尝试:

UPDATE LFRX_Attachments
    SET [File] = (SELECT TOP 1 SUBSTRING([File], PATINDEX('%Files\%', [File]) + 6, LEN([File]))
                     FROM LFRX_Attachments A
                     WHERE [Type] = 4 AND AttachmentId = A.AttachmentId)

然而,这只是以史诗般的方式,只是覆盖每一条记录,以获得表中第一张唱片的价值。有什么建议吗?

3 个答案:

答案 0 :(得分:4)

UPDATE LFRX_Attachments
SET [File] = SUBSTRING([File], PATINDEX('Files\', [File]) + 6, LEN([File]))
WHERE [Type] = 4 

答案 1 :(得分:1)

从可读性/维护的角度来看,最好选择要更改的数据,然后迭代结果集并分别更新每条记录。

答案 2 :(得分:0)

这对你有用吗?

UPDATE LFRX_Attachments SET [File] = SUBSTRING([File],PATINDEX('Files \',[File])+ 6,LEN([File]))