DB-Tabelleninhalte bearbeiten

edit | delete

Autor: Vilma Plum, Ralf v.d.Mark

eingetragen: Dienstag, 30. Oktober 2007 um 13:31 Uhr (44/2007 Kalenderwoche)

geändert: Dienstag, 13. August 2019 um 12:11 Uhr (33/2019 Kalenderwoche)

Keywords: Inhalte bearbeiten update ersetzen replace copy kopieren teilweise Bearbeitung Zeichenkonvertierung String verändern, leer, hashen

Kategorien: DB: MySQL, DB: MariaDB,

Text:

Es existieren schöne Funktionen innerhalb von SQL die eine nachträgliche Bearbeitung von Tabelleninhalten ermöglichen.


Problem: existieren in einer Tabelle-Spalte unerwünschte Inhalte (wie z.B. doppelte Hochkommata) so können diese innerhalb von SQL bearbeitet werden.
Dazu ein update-Befehl auf die Tabelle ausführen:
UPDATE unternehmen SET firmenname = REPLACE(firmenname, '"', "'");


Siehe auch TechDox-Artikel:
DB-Tabelleninhalte bearbeiten


Und hier findet man evtl. auch noch etwas:
http://www.oreilly.de/catalog/sqlnutger/chapter/ch04.html

Quellcode:  

UPDATE unternehmen 
SET kommentar = 
CASE WHEN kommentar = 'NULL' THEN NULL 
     WHEN kommentar = '' THEN NULL 
ELSE kommentar END;

ALTER TABLE `produkt` 
  CHANGE `DatumErsteintrag` `datum_eintrag` 
    DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',

ALTER TABLE `biosiegel_alt`.`produkt`
    CHARACTER SET utf8 COLLATE utf8_general_ci;


UPDATE `produkt` 
SET beginn = DATE_FORMAT(`beginn`, '%m-%Y');

UPDATE `unternehmen` 
SET `firmenname` = CONCAT_WS(", ", Firma, Firma1, Firma2);

Update `tabelle` SET
`tabelle_md5_id` = MD5(tabelle_id);

UPDATE  buchg SET
bemerkg = CONCAT_WS(" ", "[TEST]", bemerkg)
WHERE   proj_id = 8082;

UPDATE `unternehmen` 
SET `firmenname` = REPLACE(firmenname, '"', "'");

UPDATE `projects`  
SET `proj_nr` = REPLACE(proj_nr, "Ltg-1-", "Ltg_" );

DELETE FROM `unternehmen` 
WHERE  LENGTH(Firma) < 1;

UPDATE `unternehmen` 
SET    `firmenname` = REPLACE(firmenname, '"', "'")
WHERE  `firmenname` LIKE '%sting-teil%';

UPDATE person SET 
telefon = REPLACE(telef, '0228-9548-', '0228-6845-7')
WHERE telefon LIKE '0228-9548-%'

UPDATE tabelle SET 
feld_B = feld_A,
feld_int = feld_int + 1 #immer hochzaehlen
WHERE ...


UPDATE `fort_pers` SET
`fort_pers_id` = 
  CASE 
    WHEN `fobi_id` > 9999
       THEN ((`fobi_id` * 100000) + `pers_id`)
    ELSE 
       CASE 
	      WHEN `fobi_id` > 999
            THEN ((`fobi_id` * 1000000) + `pers_id`)
          ELSE 
		    CASE 
               WHEN `fobi_id` > 99
                  THEN ((`fobi_id` * 10000000) + `pers_id`)
               ELSE 
                  CASE 
                     WHEN `fobi_id` > 9
                       THEN ((`fobi_id` * 100000000) + `pers_id`)
                   ELSE ((`fobi_id` * 1000000000) + `pers_id`)
                END
            END
        END 
    END
;#Ergibt "2 u. 6" = "2000000006" / "1234 u. 666" = "1234000666"


UPDATE `buchg` SET
bemerkg = REPLACE(bemerkg, '[TEST-1]', "[TEST-2]")
WHERE proj_id = 105
AND bemerkg LIKE "%[TEST-1]%"

-- Entfernt Leerzeichen und ähnliches und Hasht das Ergebnis
UPDATE `db`.`tabelle` SET
    md5_hash = MD5(
        UPPER(
            REPLACE(
                REPLACE(
                    REPLACE(
                        REPLACE(text, 
                                char(13), ""), -- Umbruch
                            char(10), ""),     -- Umbruch
                        char(32), ""),         -- Leerzeichen
                    char(9), "")               -- Tabulator
            )
        )
WHERE 1;



UPDATE `alle_foprojekte` SET 
foprojekte_titel = TRIM(REPLACE(REPLACE(foprojekte_titel, '  ', ' '), '	', ' ')),
foprojekte_titel_eng = TRIM(REPLACE(REPLACE(foprojekte_titel_eng, '  ', ' '), '	', ' ')),
foprojekte_beschreibg = TRIM(REPLACE(REPLACE(foprojekte_beschreibg, '  ', ' '), '	', ' ')),
foprojekte_beschreibg_eng = TRIM(REPLACE(REPLACE(foprojekte_beschreibg_eng, '  ', ' '), '	', ' ')),
foprojekte_zielsetzg = TRIM(REPLACE(REPLACE(foprojekte_zielsetzg, '  ', ' '), '	', ' ')),
foprojekte_zielsetzg_eng = TRIM(REPLACE(REPLACE(foprojekte_zielsetzg_eng, '  ', ' '), '	', ' ')),
foprojekte_ergebnis = TRIM(REPLACE(REPLACE(foprojekte_ergebnis, '  ', ' '), '	', ' ')),
foprojekte_ergebnis_eng = TRIM(REPLACE(REPLACE(foprojekte_ergebnis_eng, '  ', ' '), '	', ' ')),
foprojekte_finanz_anmerkg = TRIM(REPLACE(REPLACE(foprojekte_finanz_anmerkg, '  ', ' '), '	', ' ')),
foprojekte_kapaz_anmerk = TRIM(REPLACE(REPLACE(foprojekte_kapaz_anmerk, '  ', ' '), '	', ' ')),
foprojekte_updated = foprojekte_updated
WHERE  foprojekte_id IN (2761, 2763, 4510, 37804, 37807, 42619, 57404, 58436);