Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Suchen&Ersetzen in einem BLOB-Feld mit SQL (https://www.delphipraxis.net/191132-suchen-ersetzen-einem-blob-feld-mit-sql.html)

Zwirbel 12. Dez 2016 14:08

Datenbank: FB • Version: 3 • Zugriff über: IBExpert

Suchen&Ersetzen in einem BLOB-Feld mit SQL
 
Hallo,

sicherlich eine Anfängerfrage, aber ausser einfachen SELECT-Statements oder mal ein UPDATE kenne ich mich mit SQL noch wenig aus. Daher die Frage hier.

Gegeben sei eine Tabelle in einer Firebird-Datenbank 3.0. Die Tabelle hat ein BLOB-Feld (SUB_TYPE 0), in diesen Blobs stehen zeilenweise Konfigurationsdaten. Beispiel:
Delphi-Quellcode:
DBType=0
SrvType=2
SrvName=P3400M-W10/3050
Protocol=0
SrvVer=15
DBName=C:\AM\Client\FRA\AM_FB_CLIENT.FDB
ISC4DBName=
Alias=P3400M-W10/3050:C:\AM\Client\FRA\AM_FB_CLIENT.FDB
Nun möchte ich in dieser Tabelle in allen Datensätzen das "P3400M-W10" ersetzen durch "P3400X-W10". Wie muss dazu das SQL-Statement aussehen? Das man mit einem "UPDATE" einfach Feldinhalte ersetzen kann weiß ich und die Syntax dazu ist mir auch bekannt, aber wie man Teilstrings findet und vor allen Dingen ersetzt, dazu habe ich bisher noch nicht gefunden. In MySQL scheint es eine spezielle Funktion https://techjourney.net/how-to-find-...ase-using-sql/ dafür zu geben, aber in FB finde ich etwas entsprechendes nicht.

Vielen Dank im Voraus. Gruß, Markus

mkinzler 12. Dez 2016 14:23

AW: Suchen&Ersetzen in einem BLOB-Feld mit SQL
 
Substrings finden kann man mit z.B. mit CONTAINING (ohne Indexverwendung) oder besser STARTING (wenn am Anfang des Strings; u.U. Index anwendbar) oder flexibel unter Verwendung von regulären Ausdrücken.

Jumpy 12. Dez 2016 14:25

AW: Suchen&Ersetzen in einem BLOB-Feld mit SQL
 
Auch in Firebird gibt es imho eine Replace-Funktion, die man mit der Update-Funktion kombinieren kann, denke ich. Ich weiß nur nicht ob das auf ein Blob-Feld anwendbar ist?

Zwirbel 12. Dez 2016 14:40

AW: Suchen&Ersetzen in einem BLOB-Feld mit SQL
 
Zitat:

Zitat von Jumpy (Beitrag 1355930)
Auch in Firebird gibt es imho eine Replace-Funktion, die man mit der Update-Funktion kombinieren kann, denke ich. Ich weiß nur nicht ob das auf ein Blob-Feld anwendbar ist?

Hätte ich doch mal besser da gesucht womit ich das machen will http://ibexpert.net/ibe/pmwiki.php?n=Doc.REPLACE. :idea: Wie bastelt man nun das REPLACE in eine Stored Procedure oder in ein IBBlock? Danke.

Jumpy 12. Dez 2016 14:49

AW: Suchen&Ersetzen in einem BLOB-Feld mit SQL
 
OK, dann ist das doch straight forward:

Update Tabelle
Set BlobFeld=Replace(BlobFeld,'P3400M-W10','P3400X-W10')

Zwirbel 12. Dez 2016 14:57

AW: Suchen&Ersetzen in einem BLOB-Feld mit SQL
 
Zitat:

Zitat von Jumpy (Beitrag 1355933)
OK, dann ist das doch straight forward:

Update Tabelle
Set BlobFeld=Replace(BlobFeld,'P3400M-W10','P3400X-W10')

Bingo :-D

Das war ja echt einfach.

Vielen Dank.

himitsu 12. Dez 2016 15:47

AW: Suchen&Ersetzen in einem BLOB-Feld mit SQL
 
Im Notfall hätte man noch eine Binär<>Text-Convertierung drumrummachen müssen, wenn die DB das nicht automatisch (korrekt) konvertieren kann/will.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz