Vinzenz Mai: Mit SQL in einer Spalte viele Werte ändern

Beitrag lesen

Hallo Stefan,

Ich habe in einer mysql-Datenbank eine Tabelle mit Namen products
In diser Tabelle ist ein Feld mit Namen products_model (da ist die Artikelnummer drin gespeichert).

welchen Datentyp besitzt dieses Feld? CHAR, VARCHAR oder ein Zahlentyp?

Diese Artikelnummer müssen nun erweitert werden. Und zwar müssen alle Artikel, welche zehnstellig sind eine führende 0 erhalten, und alle Artikel, die sechsstellig sind müssen am Ende um 0000 erweitert werden und am Anfang um 0.

Wie ich die zehn- und sechsstelligen Felder anzeigen lassen kann weiß ich bereits:
SELECT * FROM products WHERE products_model LIKE '__________' (10-stellig) bzw.

Unschön, MySQL besitzt so schöne Stringfunktionen, z.B:

SELECT  
    products_model    -- nicht benötigte Felder weglassen  
                      -- SELECT * ist böse[tm]  
FROM products  
WHERE [link:http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#id2938645@title=CHAR_LENGTH] = 10

Wenn Du nun diese Datensätze ändern möchtest, so verwendest Du die UPDATE-Anweisung:

UPDATE  
    products                                      -- Welche Tabelle soll geändert werden  
SET products_model = [link:http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#id2938772@title=CONCAT]('0', products_model)  -- Führende Null hinzufügen  
WHERE [link:http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#id2938645@title=CHAR_LENGTH] = 10                            -- bei zehnstelligen Produktnummern

Das Statement für die sechsstelligen Nummern solltest Du nun selbst hinbekommen. Eine Frage noch: Die sechsstelligen Nummern werden durch das Anhängen von vier Nullen ja zehnstellig. Bekommen diese dann noch eine führende Null oder bleiben die zehnstellig?

Freundliche Grüße

Vinzenz