2012-04-02 29 views
1

Ich habe eine SQL-Tabelle, die die folgenden Zeilen hat.SQL - Aktualisieren eines Feldes

(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), 

Jetzt hat sich der Pfad der Bilder geändert. Wie aktualisiere ich das Feld, das den Dateipfad aktualisiert. Sollte etwas wie dieses sein /new/images/istandaccused.jpg

Ich habe mehrere tausend Zeilen wie diese. Wie gehe ich bei der Aktualisierung vor?

Antwort

5
UPDATE myTable 
    SET ImagePath = '/new/images/' + ImagePath 

Dies wird ein Bulk-Update tut auf die Tabelle, die /new/images/ vor dem ursprünglichen ImagePath Wert einfügt.

ich stark würde vorschlagen, dass Sie die gesamte Anweisung innerhalb einer BEGIN TRAN kapseln, so dass Ihre Aussage wird:

BEGIN TRAN 
UPDATE myTable 
    SET ImagePath = '/new/images/' + ImagePath 

Dann können Sie eine SELECT tun sicher Zahlen machen richtig sind, und entweder COMMIT oder ROLLBACK dann die Transaktion, wenn Probleme auftreten.

Wenn Sie darüber nachdenken, sollten Sie unbedingt eine WHERE-Klausel hinzufügen, sodass Sie nur den Pfad zu den Datensätzen hinzufügen, in denen ein tatsächliches Bild vorhanden ist. Es gibt 2 WHERE Klauseln, die ich mir vorstellen kann, und sie sind:

BEGIN TRAN 
UPDATE myTable 
    SET ImagePath = '/new/images/' + ImagePath 
WHERE ImagePath IS NOT NULL 

Und

BEGIN TRAN 
UPDATE myTable 
    SET ImagePath = '/new/images/' + ImagePath 
WHERE ImagePath <> '' 

Der erste Wille ausschließen alle Datensätze, in denen kein Bild vorhanden ist und das Bildfeld ist null. Die zweite ist eine Kombination der ersten, aber mit der hinzugefügten Prüfung, um festzustellen, ob eine leere Zeichenfolge zu einem Datensatz hinzugefügt wurde. Es gibt vielleicht ein paar mehr Alternativen zu diesem, aber diese beiden werden Sie beginnen.

+0

Wenn 'ImagePath <> ''' dann ist es definitiv nicht Null, so dass Sie nur 'WHERE ImagePath <> '' in Ihrer vierten Abfrage benötigen –

2

Es ist ziemlich einfach, da Sie gerade den Pfad zum Dateinamen vorauseilen.

UPDATE table_name 
SET field_name = '/new/images/' + field_name 

Sie vielleicht prüfen wollen das Hinzufügen eines Where-Klausel für den Fall, Sie wollen nicht mit den Werten am Ende, die nur den Pfad enthalten

WHERE field_name <> '' 
Verwandte Themen