Willkommen bei Entwickler-Forum.
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 10 von 14
  1. #1
    Stammgast
    Registriert seit
    03.03.2007
    Ort
    Schleswig-Holstein
    Beiträge
    363

    Standard [MSSQL/RegEx] Wie würdet ihr das umsetzen?

    Hi,

    Ich habe in der Datenbank einige Datensätze, bei denen die Mail so aussieht:
    Code:
    acbbaa93fa4b45eaa1cc3a4b29d01d8b_hans.wurst@example.com
    Der Hash vor dem Underscore soll nun gefiltert werden, sprich ich möchte bei meinem Export diese Emails rausfiltern.
    Mit vernünftiger RegEx-Engine wäre das kein Problem, sollte in etwa hiermit funktionieren:
    Code:
    [0-9a-z]{32}\_%
    Dat kann er natürlich nicht...
    Also werde ich da jetzt auf die Schnelle ein Script über die exportierte Liste laufen lassen.

    Dennoch würde mich interessieren, wie ihr sowas umsetzen würdet?

    Danke
    PHP rocks!
    Eine Initiative der PHP Community

  2. #2
    Forenheld
    Registriert seit
    26.02.2003
    Beiträge
    16.317

    Standard

    http://www.regexplanet.com/advanced/java/index.html

    In Oracle gibt es REGEXP_REPLACE
    Ausdruck wäre dort
    [0-9a-z]{32} (wenn der _ erhalten bleiben soll)
    Kenn jetzt die MSSQL Engine nicht, aber der _ ist nicht zu entwerten und das % dient zu?
    Geändert von Christian Marquardt (05.09.2018 um 16:25 Uhr)
    Christian

  3. #3
    Stammgast
    Registriert seit
    03.03.2007
    Ort
    Schleswig-Holstein
    Beiträge
    363

    Standard

    Hi Christian, es handelt sich um den MSSQL-Server, sprich T-SQL von M$.
    Das % match beliebige Zeichen beliebiger Anzahlen und das ist auch schon alles, was da möglich ist.
    _ wäre sogar unescaped auch ein belibiges Zeichen und genau das wichtigste für diesen Fall, das {32} kann er gar nicht.

    Ich könnte jetzt 32x [0-9a-z] hintereinander schreiben, aber da weigere ich mich
    PHP rocks!
    Eine Initiative der PHP Community

  4. #4
    Stammgast
    Registriert seit
    24.10.2011
    Beiträge
    1.366

    Standard

    Wenn der Hash reproduzierbar wäre, ginge es natürlich ganz simpel mit der Hashfunktion und einem matchenden Join via like.
    Aber ich fürchte, das ist ein Passwort oder sowas.

    Ach und die 32 Stellen plus Unterstrich reichen nicht als Kriterium für ein Abschneiden?
    Gruß, defo

  5. #5
    Stammgast
    Registriert seit
    03.03.2007
    Ort
    Schleswig-Holstein
    Beiträge
    363

    Standard

    Gute Frage, wie sähe dann die Bedingung aus? Mit CHARINDEX kann ich wohl prüfen, ob an Stelle 33 ein _ liegt, aber das dürfen ja zuvor nur Buchstaben und Zahlen sein.

    Acho, fürs Verständnis: Die Hashwerte sind mal durch eine Erweiterung zugekommen.
    Anstatt die Datensätze mit einem Flag ungültig zu machen, wurde die E-Mail verunglimpft. Nicht die cleverste Lösung, aber lässt sich jetzt nicht mehr ändern.
    PHP rocks!
    Eine Initiative der PHP Community

  6. #6
    Forenheld
    Registriert seit
    26.02.2003
    Beiträge
    16.317

    Standard

    Warum nicht mit SubString abschneiden?

    https://docs.microsoft.com/en-us/sql...ql-server-2017
    Christian

  7. #7
    Stammgast
    Registriert seit
    03.03.2007
    Ort
    Schleswig-Holstein
    Beiträge
    363

    Standard

    Naja, wie denn? Ich könnte zwar substring vom Offset 33 machen, aber ich muß ja dafür die Bedingung festlegen, das trifft ja anicht auf alle E-Mails zu.
    Woher soll ich denn wissen, dass es einer dieser gehashten Datensätze ist?
    PHP rocks!
    Eine Initiative der PHP Community

  8. #8
    Forenheld
    Registriert seit
    26.02.2003
    Beiträge
    16.317

    Standard

    aber ich muß ja dafür die Bedingung festlegen, das trifft ja anicht auf alle E-Mails zu.
    Das war ja hier so nicht bekannt, diese Bedingung

    Man kann natürlich nach dem _ suchen


    SUBSTRING(eMail,CHARINDEX('_',eMail),LEN(eMail)-CHARINDEX('_',eMail))

    So in etwa...ggf. verschoben um 1 Zeichen

    Um auszuschließen, dass es bei eMails ohne Hash gemacht wird, ggf. ein case mit der Suche nach einem _ vorschalten
    Geändert von Christian Marquardt (05.09.2018 um 18:44 Uhr)
    Christian

  9. #9
    Stammgast
    Registriert seit
    03.03.2007
    Ort
    Schleswig-Holstein
    Beiträge
    363

    Standard

    Ja, schon richtig, aber es könnte ja auch E-Mails der Form vorname_nachname@example.com geben.
    PHP rocks!
    Eine Initiative der PHP Community

  10. #10
    Forenheld
    Registriert seit
    26.02.2003
    Beiträge
    16.317

    Standard

    Um auszuschließen, dass es bei eMails ohne Hash gemacht wird, ggf. ein case mit der Suche nach einem _ vorschalten
    ..und mindenstens 1 Ziffer vor dem _ und 32 Zeichen lang

    Sofern diese Bedingungen auch dann zutreffen, weil es auch eMails
    xx123xx_Mustermann@sdddd.de
    gibt, kannst du das dann auch mit einem Script nicht mehr lösen
    Christian

 

 
Seite 1 von 2 1 2 LetzteLetzte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •