如何为同一列更新具有不同值的许多行?

时间:2019-03-07 22:05:27

标签: sql-server sql-server-2014

我有一个表,该表的列包含文件的路径。该路径是绝对路径,该列的值如下所示:C:\CI\Media\animal.jpg

该表看起来像这样,除了有很多行,所以手动编辑是不实际的:

`+----+-----------------------------------+
| ID |               Path                |
+----+-----------------------------------+
|  1 | C:\CI\Media\sushi.jpg             |
|  2 | C:\CI\Media\animal.jpg            |
|  3 | C:\CI\Media\Tuscany Trip\pisa.png |
+----+-----------------------------------+`

路径是nvarchar(260)

我想做的是运行一个查询,该查询将更新每个记录,以便每个记录的路径将C:\CI\替换为C:\CI\Net,最后得到一个看起来像这样的表所以:

`+----+---------------------------------------+
| ID |                 Path                  |
+----+---------------------------------------+
|  1 | C:\CI\Net\Media\sushi.jpg             |
|  2 | C:\CI\Net\Media\animal.jpg            |
|  3 | C:\CI\Net\Media\Tuscany Trip\pisa.png |
+----+---------------------------------------+`

是否有一种格式化查询的格式,该查询将更新每条记录,但会根据现有值进行更新(将每条记录的C:\CI部分替换为C:\CI\Net,同时保留其余的值),而不是像正常的更新表一样将每列设置为相同的值set column = value?

1 个答案:

答案 0 :(得分:5)

天哪,您几乎自己编写了代码。

Update YourTable
set path = replace(path, 'C:\CI', 'C:\CI\Net')