如何根据当前数据修改所有数据库列数据?

时间:2009-07-13 15:05:05

标签: sql

在我的特定情况下,我们有一个db表,除其他字段外,还有一个“Image”字段。我们想在此表的每一行中为此列添加“.jpg”。为了简单起见,我们会说它只有两列......一个ID列和一个Image列。 (跳过“Image”空字符串的行的奖励积分。)

问题标题有点开放,因为我可以想象有人想要对所有行做任何事情。 (“更新所有行,以便列'X'的值除以2”,“更新所有行,以便列'Y'前置此路径”,等等。)

虽然我使用的是SQL服务器,但我怀疑这些答案会非常普遍...但如果您的具体答案不是,请不要让它阻止您回复......但请在帖子中添加它是什么系统。

5 个答案:

答案 0 :(得分:10)

你是说这个意思吗?这适用于SQL Server。

UPDATE  [table]
SET     [image] = [image] + '.jpg'
WHERE   ISNULL([image], '') <> ''

如果您希望这是可重复的:

UPDATE  [table]
SET     [image] = [image] + '.jpg'
WHERE   ISNULL([image], '') <> ''
AND     [image] NOT LIKE '%.jpg'

答案 1 :(得分:1)

像这样

update Table
set image = image + '.jpg'
where image <> ''

update Table
set image = image + '.jpg'
where rtrim(image) <> ''

update Table
set image = image + '.jpg'
where rtrim(coalesce(image,'')) <> ''

答案 2 :(得分:1)

SQLServer 2k

declare @Image table (
Id int,
Name varchar(10)
)

insert into @Image values (1,'hello')
insert into @Image values (2,'')
insert into @Image values (3,'world')
update @Image set Name = Name + '.jpg'
from @Image where Name <> ''

select * from @Image

当您的更新条件跨越多个表时,update BLAH from YIKES语法非常有用,因为它允许连接。

答案 3 :(得分:0)

有些事情:

Update tableName
Set Image = Image+'.jpg'
where
  IsNUlL(Image,'') != ''

这是针对T-SQL(SQL Server)方言。

答案 4 :(得分:0)

UPDATE imageTbl SET image = image + '.jpg' WHERE image IS NOT NULL