我有一个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'
我有几千行像这样。我如何进行更新呢?
答案 0 :(得分:5)
UPDATE myTable
SET ImagePath = '/new/images/' + ImagePath
这将对在原始/new/images/
值之前插入ImagePath
的表进行批量更新。
我强烈建议您将整个语句封装在BEGIN TRAN
中,以便您的陈述变为:
BEGIN TRAN
UPDATE myTable
SET ImagePath = '/new/images/' + ImagePath
然后,您可以执行SELECT
以确保数字正确无误,然后如果出现任何问题,可以COMMIT
或ROLLBACK
进行交易。
考虑到这一点,你绝对应该添加一个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 <> ''