SQL - 更新字段

时间:2012-04-02 14:57:29

标签: sql

我有一个sql表,其中包含以下行。

(4081, 3, '', 'contrapreneurship.jpg', 15.0000, '2007-07-09 05:16:35', '2007-07-15 12:41:03', NULL, 0.00, 1, 1, 0, 0),
(4082, 3, '', 'istandaccused.jpg', 12.9500, '2007-07-15 12:34:00', '2007-07-15 12:37:24', NULL, 0.00, 1, 1, 0, 0),
(4083, 3, '', 'excitingthesenses.jpg', 45.0000, '2007-07-22 14:00:47', '2007-07-22 14:01:24', NULL, 0.00, 1, 1, 0, 0),
(4232, 2, '', 'ambushindevilspass.jpg', 125.0000, '2008-07-11 11:00:19', '2008-07-11 11:50:36', NULL, 0.00, 0, 1, 0, 0),

现在图像的路径已经改变。我如何更新字段,即更新文件路径。 应该是这样的'/new/images/istandaccused.jpg'

我有几千行像这样。我如何进行更新呢?

2 个答案:

答案 0 :(得分:5)

UPDATE myTable
   SET ImagePath = '/new/images/' + ImagePath

这将对在原始/new/images/值之前插入ImagePath的表进行批量更新。

我强烈建议您将整个语句封装在BEGIN TRAN中,以便您的陈述变为:

BEGIN TRAN
UPDATE myTable
   SET ImagePath = '/new/images/' + ImagePath

然后,您可以执行SELECT以确保数字正确无误,然后如果出现任何问题,可以COMMITROLLBACK进行交易。

考虑到这一点,你绝对应该添加一个WHERE子句,这样你只需要添加存在实际图像的记录的路径。我可以想到有两个WHERE条款,它们是:

BEGIN TRAN
UPDATE myTable
   SET ImagePath = '/new/images/' + ImagePath
 WHERE ImagePath IS NOT NULL

BEGIN TRAN
UPDATE myTable
   SET ImagePath = '/new/images/' + ImagePath
 WHERE ImagePath <> ''

第一个排除所有没有图像且图像字段为空的记录。 第二个是第一个的组合,但添加了检查以查看是否已将空字符串添加到记录中。可能还有其他几种选择,但这两种方法可以让你开始。

答案 1 :(得分:2)

非常简单,因为你只是预先挂起了文件名的路径。

UPDATE table_name
SET field_name = '/new/images/' + field_name

您可能需要考虑添加Where子句,以防您不想以仅包含路径的值结束

WHERE field_name <> ''