2009-07-13 9 views
1

Dans mon cas particulier, nous avons une table db qui, entre autres champs, a un champ "Image". Nous aimerions ajouter ".jpg" à chaque ligne de cette table pour cette colonne. Pour le garder simple, nous dirons qu'il a juste deux colonnes ... une colonne ID et une colonne Image. (Le point de la question est un peu plus ouvert parce que je peux imaginer quelqu'un qui veut à peu près tout à tous les rangs. ("mettre à jour toutes les lignes de sorte que la colonne 'X' a ses valeurs divisées par 2", "mettre à jour toutes les lignes afin que la colonne 'Y' soit ajoutée avec ce chemin", etc.)Comment modifier toutes les données de colonne DB en fonction des données actuelles?

Bien que j'utilise le serveur SQL , Je soupçonne que les réponses seront assez universelles ... mais si votre réponse particulière n'est pas, ne laissez pas cela vous empêcher de répondre ... mais s'il vous plaît, ajoutez dans votre message quel système il est destiné.

Répondre

10

Vous voulez dire comme ça? Cela fonctionne dans SQL Server.

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

Si vous voulez que ce soit reproductible:

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

Peut-être ajouter un "ET [image] PAS COMME '% .jpg'" –

+0

@Joel - oui, il n'a pas spécifié la répétabilité, mais aucune mauvaise chose ... –

1

comme celui-ci

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

ou

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

ou

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

Quelque chose le long des lignes de:

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

Ce programme vise le dialecte T-SQL (SQL Server).

+2

'<>' devrait être utilisé au lieu de '! =', car il est portable. '! =' n'est pas une norme ANSI. – Eric

0
UPDATE imageTbl SET image = image + '.jpg' WHERE image IS NOT NULL 
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 

La syntaxe est update BLAH from YIKES vraiment utile lorsque vos critères de durée de mise à jour plusieurs tables, car elle permet joint.

Questions connexes