Как изменить все данные столбца БД на основе текущих данных? - PullRequest
1 голос
/ 13 июля 2009

В моем конкретном случае у нас есть таблица БД, которая, помимо других полей, имеет поле «Изображение». Мы хотели бы добавить ".jpg" к каждой строке в этой таблице для этого столбца. Для простоты скажем, что в нем всего два столбца: столбец идентификатора и столбец изображения. (бонусные баллы за пропуск строк, для которых «Изображение» содержит пустую строку.)

Название вопроса немного более открытое, потому что я могу представить, что кто-то хочет получить что-нибудь во всех строках. («обновить все строки, чтобы столбец« X »имел значения, разделенные на 2», «обновить все строки, чтобы столбец« Y »начинался с этого пути» и т. д.)

Хотя я использую SQL-сервер, я подозреваю, что ответы будут довольно универсальными ... но если ваш конкретный ответ не так, не позволяйте этому мешать вам отвечать ... но, пожалуйста, добавьте в свой пост для какой системы.

Ответы [ 5 ]

10 голосов
/ 13 июля 2009

Вы имеете в виду, как это? Это работает в 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 голос
/ 13 июля 2009

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 действительно полезен, когда ваши критерии для обновления охватывают несколько таблиц, поскольку разрешают объединения.

1 голос
/ 13 июля 2009

как это

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,'')) <> ''
0 голосов
/ 13 июля 2009
UPDATE imageTbl SET image = image + '.jpg' WHERE image IS NOT NULL
0 голосов
/ 13 июля 2009

Что-то вроде:

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

Это нацелено на диалект T-SQL (SQL Server).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...