DB-Tabelleninhalte bearbeiten
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);