代码之家  ›  专栏  ›  技术社区  ›  Beska

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

sql
  •  1
  • Beska  · 技术社区  · 16 年前

    在我的特殊情况下,我们有一个DB表,它和其他字段一起有一个“image”字段。我们希望将“.jpg”附加到此列的表中的每一行。为了简单起见,我们会说它只有两列……一个ID列和一个图像列。(跳过“image”的空字符串行的奖励点数。)

    这个问题的标题有点开放,因为我可以想象有人想要所有行的任何内容。(“更新所有行,使列“x”的值除以2”,“更新所有行,使列“y”前面带有此路径”等。)

    虽然我使用的是SQL Server,但我怀疑答案是非常普遍的……但是如果您的特定答案不是,请不要让它阻止您做出响应……但是请在您的帖子中添加它所适用的系统。

    5 回复  |  直到 16 年前
        1
  •  10
  •   David M    16 年前

    你是说像这样?这在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'
    
        2
  •  1
  •   SQLMenace    16 年前

    这样地

    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,'')) <> ''
    
        3
  •  1
  •   butterchicken    16 年前

    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 当更新条件跨越多个表时,语法非常有用,因为它允许联接。

        4
  •  0
  •   Frank V    16 年前

    沿着这条线的东西:

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

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

        5
  •  0
  •   Byron Whitlock    16 年前
    UPDATE imageTbl SET image = image + '.jpg' WHERE image IS NOT NULL