Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Aus einem String alles außer Zahlen entfernen (MySql Abfrage) (https://www.delphipraxis.net/197551-aus-einem-string-alles-ausser-zahlen-entfernen-mysql-abfrage.html)

Youuuu 15. Aug 2018 21:43

Datenbank: Mysql • Version: 5 • Zugriff über: Devart

Aus einem String alles außer Zahlen entfernen (MySql Abfrage)
 
Guten Abend,

wie lösche ich aus einer Spalte am besten alle Zeichen außer Zahlen?

Vielen Dank.

KodeZwerg 15. Aug 2018 21:50

AW: Aus einem String alles außer Zahlen entfernen
 
*entfernt*

Youuuu 15. Aug 2018 21:53

AW: Aus einem String alles außer Zahlen entfernen
 
Per Delphi weiß ich es auch :)

Ich meinte aber per Mysql Abfrage direkt.

Edit: hab Mysql nicht im Titel erwähnt -.- *korrigiert

Delphi.Narium 15. Aug 2018 22:00

AW: Aus einem String alles außer Zahlen entfernen (MySql Abfrage)
 
MySQL 8.0 Reference Manual 12.5.2 Regular Expressions

Youuuu 15. Aug 2018 22:08

AW: Aus einem String alles außer Zahlen entfernen (MySql Abfrage)
 
Ich finde zu diesem Ausdruck allerdings immer nur "Select", ist es damit auch möglich per Update direkt den Spalteninhalt zu ändern?



Query.SQL.Text := 'Update `'+Tabelle+'` SET `plz` = REGEXP_REPLACE(`plz`, :Entfernen, :Ersetzen)';

Query.ParamByName('Entfernen').AsString := '[a-z]+';
Query.ParamByName('Ersetzen').AsString := '';

Wäre das richtig?

Delphi.Narium 15. Aug 2018 22:13

AW: Aus einem String alles außer Zahlen entfernen (MySql Abfrage)
 
Ja.

Bau Dir bitte zuerst ein Select zusammen, das das richtige Ergebnis für die gewünschte Spalte ergibt.

Wenn das funktioniert machst Du ein Update in der Form:

SQL-Code:
update tabelle set spalte = <hier kommt nun Dein im Select zusammengebauter Teil hin> where bedingung

Youuuu 15. Aug 2018 22:23

AW: Aus einem String alles außer Zahlen entfernen (MySql Abfrage)
 
Schau mal bitte meinen Beispiel Code oben an.

Delphi.Narium 15. Aug 2018 22:40

AW: Aus einem String alles außer Zahlen entfernen (MySql Abfrage)
 
Liefert ein
Delphi-Quellcode:
Query.SQL.Text := 'select REGEXP_REPLACE(`plz`, :Entfernen, :Ersetzen) as PLZ from tabelle';

Query.ParamByName('Entfernen').AsString := '[a-z]+';
Query.ParamByName('Ersetzen').AsString := '';
Query.Open;
das richtige Ergebnis?

Dann sollte das funktionieren.

Delphi-Quellcode:
Query.SQL.Text := Format('Update `%s` SET `plz` = REGEXP_REPLACE(`plz`, :Entfernen, :Ersetzen)',[Tabelle]);

Query.ParamByName('Entfernen').AsString := '[a-z]+';
Query.ParamByName('Ersetzen').AsString := '';
Query.ExecSQL;

hoika 15. Aug 2018 22:46

AW: Aus einem String alles außer Zahlen entfernen (MySql Abfrage)
 
Hallo,
das kann man auch zusammenfassen

Delete From Tabelle Tab1 Where Tab1.Id In (Select Tab2.Id Where RegEx(Tab2.PLZ)=Integer From Tabelle Tab2)

Das RegEx(Tab2.PLZ)=Integer habe ich nur mal so hingeschrieben.

Aber ich denke, ein Delete sollte immer die letzte Option sein,
besser den Anwender auf die falschen PLZ hinweisen.


PS:
OK: falsch gelesen, es sollte ja nur der Eintrags-Wert geeert werden.

jobo 16. Aug 2018 06:52

AW: Aus einem String alles außer Zahlen entfernen (MySql Abfrage)
 
Wenn man davon ausgeht, dass hier lediglich systematisch einige Fehler korrigiert werden sollen, sollte das Update noch auf Zeilen beschränkt werden, die überhaupt einen Fehler enthalten, also Buchstaben.
Andernfalls werden alle (ggF. sehr viele) Zeilen größtenteils unnötig mit dem Originalwert überschrieben. Das kann je nach DB Modell zu Problemen führen, wenn bspw. Änderungen protokolliert werden. (Abgesehen von dem mglw. großen Umfang der Änderung selbst)
Und ja, Delete löscht ganze Zeilen, nicht nur Werte in Zellen, also Vorsicht!


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:47 Uhr.
Seite 1 von 2  1 2      

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