2011-04-14 100 views
2

以前的开发人员创建了一个存储我们服务器中文件绝对路径的表。我想将它们转换为相对路径。使用select语句在表中更新所有记录的字段

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

这是我最初试图:

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) 

然而,这喝醉史诗的方式仅通过覆盖每个记录在表中的第一条记录的值。有什么建议么?

回答

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

谈脑屁。在审查您的帖子之前,我发现了这个语法。更新一个设置A. [文件] = ...从LFRX_Attachments A.有趣的非常感谢! – 2011-04-14 18:13:15

1

从可读性/维护角度来看,您最好选择要更改的数据,然后遍历结果集并单独更新每条记录。

0

这是否适合您?

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

相关问题