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

标签 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)

但是,通过覆盖每条记录以获取表中第一条记录的值,这会导致史诗般的失败。有什么建议吗?

最佳答案

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

关于sql - 使用 select 语句更新表中所有记录的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5667554/

相关文章:

c# - 将按位枚举映射到 sql 列值

MySQL - 如何指示用户是否申请工作?

mysql - sql mysql 最大()

mysql - 一周中特定日期的 SQL 更新

mysql - 删除在其他表中没有引用的行;

asp.net - "SELECT TOP {x}"查询的 LINQ to SQL 性能

sql - 帮助优化 MySQL 表(约 500,000 条记录)和 PHP 代码

mysql - 在 MySQL 中使用字符串的数字组件对字符串进行数字排序的首选方法是什么?

mysql - 插入唯一文本需要什么最低隔离级别?

sql - Teradata 是否支持 -Multiple With Clause?