AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Aus einem String alles außer Zahlen entfernen (MySql Abfrage)
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von Youuuu · begonnen am 15. Aug 2018 · letzter Beitrag vom 16. Aug 2018
Antwort Antwort
Seite 1 von 2  1 2      
Youuuu

Registriert seit: 9. Okt 2016
60 Beiträge
 
Delphi 11 Alexandria
 
#1

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

  Alt 15. Aug 2018, 22:43
Datenbank: Mysql • Version: 5 • Zugriff über: Devart
Guten Abend,

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

Vielen Dank.

Geändert von Youuuu (15. Aug 2018 um 22:54 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Aus einem String alles außer Zahlen entfernen

  Alt 15. Aug 2018, 22:50
*entfernt*
Gruß vom KodeZwerg

Geändert von KodeZwerg (15. Aug 2018 um 22:59 Uhr)
  Mit Zitat antworten Zitat
Youuuu

Registriert seit: 9. Okt 2016
60 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Aus einem String alles außer Zahlen entfernen

  Alt 15. Aug 2018, 22:53
Per Delphi weiß ich es auch

Ich meinte aber per Mysql Abfrage direkt.

Edit: hab Mysql nicht im Titel erwähnt -.- *korrigiert
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#4

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

  Alt 15. Aug 2018, 23:00
MySQL 8.0 Reference Manual 12.5.2 Regular Expressions
  Mit Zitat antworten Zitat
Youuuu

Registriert seit: 9. Okt 2016
60 Beiträge
 
Delphi 11 Alexandria
 
#5

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

  Alt 15. Aug 2018, 23:08
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?

Geändert von Youuuu (15. Aug 2018 um 23:14 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#6

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

  Alt 15. Aug 2018, 23:13
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:

update tabelle set spalte = <hier kommt nun Dein im Select zusammengebauter Teil hin> where bedingung
  Mit Zitat antworten Zitat
Youuuu

Registriert seit: 9. Okt 2016
60 Beiträge
 
Delphi 11 Alexandria
 
#7

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

  Alt 15. Aug 2018, 23:23
Schau mal bitte meinen Beispiel Code oben an.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#8

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

  Alt 15. Aug 2018, 23:40
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;
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#9

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

  Alt 15. Aug 2018, 23:46
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.
Heiko

Geändert von hoika (16. Aug 2018 um 01:40 Uhr)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#10

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

  Alt 16. Aug 2018, 07:52
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!
Gruß, Jo
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:28 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