BMW Einzylinder-Forum
ANDERE THEMEN => OFF - TOPIC => Thema gestartet von: admin am 18 April 2022, 20:20:24
Mal eine Frage an die SQL-Profis unter Euch:
Ich habe in einer Datenbank eine Tabelle mit ganz vielen Spalten.
Jetzt möchte ich in der Spalte "cust_land" (für: "custom Land"-Settings im User-Profil) alle Begriffe (z.B. "Alemanha") suchen und mit einem Anderen ersetzen (zb. "Deutschland").
Wie würde denn der korrekte Begriff dafür lauten?
Mein SQL ist leider echt nicht so gut. Habs mit folgendem Befehl probiert:
SELECT themes REPLACE(cust_land, 'Alemanha', 'Deutschland')
Leider funzt das nicht > Fehlermeldung. Was mache ich falsch?
Danke und viele Grüße
Karl
Hi Karl,
Ich kenne deine DB nicht, deshalb ohne Gewähr. MySQL würde sowas schlucken:
UPDATE themes SET cust_land = REPLACE(cust_land, "Alemanha", "Deutschland")
Viel Glück,
Kahlo.
Update themes Set cust_land = 'Deutschland' where cust_land = 'Alemanha'
Dankeschön :)
Werde ich morgen früh gleich mal ausprobieren sobald ich wieder online bin
Zitat von: Hansdampf am 18 April 2022, 21:07:42Update themes Set cust_land = 'Deutschland' where cust_land = 'Alemanha'
Hat leider nicht geklappt. Folgende Meldung erscheint: "#1054 - Unbekanntes Tabellenfeld 'cust_land' in field list".
Ich hatte vorher von der Tabelle ein SQL-Backup gezogen. Der Aufbau ist wie folgt.
CREATE TABLE `themes` (
`id_member` mediumint(8 ) NOT NULL DEFAULT '0',
`id_theme` tinyint(4) UNSIGNED NOT NULL DEFAULT '1',
`variable` varchar(255) NOT NULL DEFAULT '',
`value` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
--
-- Daten für Tabelle `themes`
--
INSERT INTO `themes` (`id_member`, `id_theme`, `variable`, `value`) VALUES
(2, 1, 'cust_gender', '{gender_1}'),
(2, 1, 'cust_bundes', 'Hessen'),
(2, 1, 'cust_land', 'Deutschland'),
(2, 1, 'cust_ort', 'Offenbach'),
(2, 1, 'cust_plz', '63065'),
(2, 1, 'calendar_start_day', '1'),
(5, 1, 'cust_bundes', 'Bayern'),
(5, 1, 'cust_gender', '{gender_1}'),
(5, 1, 'cust_land', 'Deutschland'),
(5, 1, 'cust_ort', 'Herzogenaurach'),
(11, 1, 'cust_bundes', 'Hessen'),
(11, 1, 'cust_gender', '{gender_1}'),
(11, 1, 'cust_land', 'Deutschland'),
(11, 1, 'cust_ort', 'Münster'),
Die in fett markierten Datensätze möchte ich gern auslesen / ersetzen.
Viele Grüße, Karl
Ohne irgendeine Ahunug zu haben... ;D :-*
Könnte es sein, dass auch in dem Befehl 'cust_land' statt cust_land stehen muss?
Also:
Update themes Set 'cust_land' = 'Deutschland' where 'cust_land' = 'Alemanha'
Wenn ich noch ne Spur an fundiertem Wissen in diesem Bereich hätte, würde ich dir entweder widersprechen oder dir Recht geben ;D Ich glaube die Problematik hier liegt darin, dass die Daten(-felder) ich sags mal "plump" in einer Reihe liegen (Kommasepariert) und nicht einzelne Spalten sind ...
Die Datenbank gibt da eine eindeutige Antwort:
#1064 - Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch nachschlagen bei ''cust_land' = 'Deutschland' where 'cust_land' = 'Alemanha'' in Zeile 1
Schade. Wäre auch zu einfach gewesen...
Mal abwarten was die Profis sagen ...
By the way - ich krieg seit der Umstellung auf die neue Forenversion unter Windows kleinen PopUps die mir sagen dass ich eine neue Nachricht im Forum erhalten habe ... nice!
Und den hast du dich nicht getraut? Genau so und nicht mit irgendwelchen anderen Apostrophen?
UPDATE themes SET cust_land = REPLACE(cust_land, "Alemanha", "Deutschland")
Ja na klar hab ich das schon ausprobiert - hat leider nichts gebracht.
Frisch aus der PHPmyadmin-Bäckerei folgende Meldung:
#1054 - Unbekanntes Tabellenfeld 'cust_land' in field list
hab auch schon weiter herum gespielt...
UPDATE themes SET variable = REPLACE('cust_land', 'Alemanha', 'Deutschland')
Wenn ich diesen Befehl per "Abfrage simulieren" starte, dann erhalte ich eine positive Rückmeldung (keinen Fehler!), die besagt: " Gefundene Zeilen: 21027"
Ich weiß aber dass der Datensatz mit "Alemanha" nur in einer einzigen Zeile vorkommt. Deswegen weiß ich jetzt nicht WAS der o.g. Befehl machen würde. Deswegen lasse ich das lieber mal.
Nachtrag:
Ich hab es anders gelöst -> Export der Tabelle in eine SQL-Datei. Editieren der Datei mit Notepad. Danach Einspielen der Datei