Textteile in MySQL Tabelle ersetzten

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
gnude
Beiträge: 1569
Registriert: 14.09.2009 22:05:28
Kontaktdaten:

Textteile in MySQL Tabelle ersetzten

Beitrag von gnude » 02.03.2020 20:30:02

Hallo Debianforum,

ich brauche mal einen SQL Befehl und hoffe das hier jemand helfen kann. Habe eine Datenbank in der mehrere Spalten sind in denen HTML Code und darin auch Links vorkommen, z.b. als Spalte: Artikelbeschreibung, Link, BildLink etc. Nun möchte ich in der kompletten Datenbank alle http:// in hppts:// ändern. In der Suche/Ersetzten Funktion muss ich den Doppelpunkt ja einbeziehen denn nur http: und https: ist eindeutig. Besteht die Möglichkeit in der Tabelle alle Felder auf einmal zu korrigieren und nicht nur Spalte für Spalte? Dazu muss der Rest des Feldes ja intakt bleiben. Wenn in dem Feld z.b.

Code: Alles auswählen

Das ist ein toller Artikel <a href="http://beispiel.link" alt="beispiel"> und ich kann ihn empfehlen
steht sollte das http: gegen https: ausgetauscht werden, der Rest des Feldes aber intakt bleiben.

Kann mir jemand einen passen SQL Befehl zeigen? :hail:

Benutzeravatar
Lord_Carlos
Beiträge: 5578
Registriert: 30.04.2006 17:58:52
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Dänemark

Re: Textteile in MySQL Tabelle ersetzten

Beitrag von Lord_Carlos » 02.03.2020 21:58:13

gnude hat geschrieben: ↑ zum Beitrag ↑
02.03.2020 20:30:02
steht sollte das http: gegen https: ausgetauscht werden, der Rest des Feldes aber intakt bleiben.

Kann mir jemand einen passen SQL Befehl zeigen? :hail:
Sollte das nicht einfach mit dem replace befehl gehen?
https://www.w3schools.com/sql/func_sqls ... eplace.asp

UPDATE tbl_name
SET
field_name = REPLACE(field_name,
'http://',
'https://')


Einfach nach mysql replace suchen ergibt einiges.

Code: Alles auswählen

╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!

Benutzeravatar
gnude
Beiträge: 1569
Registriert: 14.09.2009 22:05:28
Kontaktdaten:

Re: Textteile in MySQL Tabelle ersetzten

Beitrag von gnude » 02.03.2020 22:12:19

Danke, das ist schonmal der richtige Weg. Gibt es auch eine Möglichkeit das für alle Felder auf einmal zu machen?

thoerb
Beiträge: 1685
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: Textteile in MySQL Tabelle ersetzten

Beitrag von thoerb » 02.03.2020 22:16:37

Oder so (nicht getestet):

Code: Alles auswählen

SELECT *, REPLACE('href="http:','http','https') FROM tbl_name;

Benutzeravatar
Lord_Carlos
Beiträge: 5578
Registriert: 30.04.2006 17:58:52
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Dänemark

Re: Textteile in MySQL Tabelle ersetzten

Beitrag von Lord_Carlos » 02.03.2020 22:24:46

thoerb hat geschrieben: ↑ zum Beitrag ↑
02.03.2020 22:16:37
Oder so (nicht getestet):

Code: Alles auswählen

SELECT *, REPLACE('href="http:','http','https') FROM tbl_name;
Das ist dann aber nur ein select oder?
Also nur die Ausgabe wird geaendert, es wird so nichts in der Datenbank gepeichert?

Code: Alles auswählen

╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!

Benutzeravatar
Lord_Carlos
Beiträge: 5578
Registriert: 30.04.2006 17:58:52
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Dänemark

Re: Textteile in MySQL Tabelle ersetzten

Beitrag von Lord_Carlos » 02.03.2020 22:26:12

gnude hat geschrieben: ↑ zum Beitrag ↑
02.03.2020 22:12:19
Danke, das ist schonmal der richtige Weg. Gibt es auch eine Möglichkeit das für alle Felder auf einmal zu machen?
Hast du schon versucht selber eine Loesung zu finden?

https://stackoverflow.com/a/12248776/2001062

Code: Alles auswählen

╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!

thoerb
Beiträge: 1685
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: Textteile in MySQL Tabelle ersetzten

Beitrag von thoerb » 02.03.2020 22:29:47

Lord_Carlos hat geschrieben: ↑ zum Beitrag ↑
02.03.2020 22:24:46
Das ist dann aber nur ein select oder?
Also nur die Ausgabe wird geaendert, es wird so nichts in der Datenbank gepeichert?
Ja hast recht, das geht so nicht.

Antworten