2011-04-14 37 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([文件]))

相關問題