AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken "Umgedrehtes" LIKE-Statement?

"Umgedrehtes" LIKE-Statement?

Ein Thema von Mithrandir · begonnen am 9. Mär 2010 · letzter Beitrag vom 10. Mär 2010
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#1

"Umgedrehtes" LIKE-Statement?

  Alt 9. Mär 2010, 15:12
Datenbank: MySQL • Version: 5.1.41 • Zugriff über: PHP
Hi ihr,

ich stehe gerade etwas aufm Schlauch. Wohl auch, weil mir für mein Problem kein Schlagwort einfällt. Folgendes Statement ist ja bekannt:

SELECT COUNT(*) FROM testseite WHERE spammail LIKE '%@mail.de'; Das würde alle Adressen in der Datenbank matchen, die ein "@mail.de" haben.

Nun hab ich es aber andersherum.
In der DB steht "*@mail.de", und ich komme mit "test@gmx.de", "test@mail.de", "juhuuu@mail.de", usw usf. Wie kann ich jetzt eine passende SQL-Abfrage dazu bauen? Oder muss ich in diesem Fall mit PHP Vorarbeit leisten und den Teil vor "@mail.de" entfernen? Die obige Abfrage mit der richtigen Mailadresse führt leider nicht zum Erfolg.
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: "Umgedrehtes" LIKE-Statement?

  Alt 9. Mär 2010, 15:20
Du meinst nicht zufällig das hier?

SELECT COUNT(*) FROM testseite WHERE spammail NOT LIKE '%@mail.de';
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#3

Re: "Umgedrehtes" LIKE-Statement?

  Alt 9. Mär 2010, 15:25
Sowas vielleicht:
SELECT COUNT(*) FROM testseite WHERE 'test@mail.deLIKE spammail;

(Du musst aber natürlich das * durch % ersetzen)
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#4

Re: "Umgedrehtes" LIKE-Statement?

  Alt 9. Mär 2010, 15:30
@Julius: Ja, genau das hab ich gesucht. Dass ich allerdings "*" durch "%" ersetzen muss, ist etwas.... unglücklich...
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.007 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

Re: "Umgedrehtes" LIKE-Statement?

  Alt 9. Mär 2010, 15:41
Zitat von Daniel G:
@Julius: Ja, genau das hab ich gesucht. Dass ich allerdings "*" durch "%" ersetzen muss, ist etwas.... unglücklich...
Es müsste doch ohne Problem folgendes gehen:
SELECT COUNT(*) FROM testseite WHERE 'test@mail.deLIKE replace(spammail, '*', '%');
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#6

Re: "Umgedrehtes" LIKE-Statement?

  Alt 9. Mär 2010, 16:11
Hm, ich hab jetzt ein "Suchen&Ersetzen" über die SQL-Daten laufen lassen. Ich werd deinen Vorschlag beim nächsten Mal umsetzen.
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#7

Re: "Umgedrehtes" LIKE-Statement?

  Alt 9. Mär 2010, 22:01
Vorsicht!

LIKE ist generell sehr langsam, das sollte ja mittlerweile bekannt sein. Besonders ein LIKE mit Wildcards ist sehr langsam, da dieses nicht die eingestellten Indizes benutzen kann. Auch das Anwenden einer replace-Funktion auf eine Spalte macht die Datenbank unnötig langsam, da dieses replace auf ausnahmslos jeden Eintrag angewendet werden muss. Daher besser die Daten direkt mit "%" abspeichern. Wenn es sich um sehr viele Einträge handelt am besten noch einen anderen Weg suchen, sonst führt das besonders bei schwachen Servern schnell zum Exitus.

Liebe Grüße,
Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#8

Re: "Umgedrehtes" LIKE-Statement?

  Alt 9. Mär 2010, 22:12
~32.000 Einträge in der Tabelle, vielleicht fünf mal am Tag aufgerufen. Meinst das passt? Weil mir ehrlich gesagt kein anderer Weg einfällt gerade.
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#9

Re: "Umgedrehtes" LIKE-Statement?

  Alt 9. Mär 2010, 22:52
Zitat von Valle:
Vorsicht!
Vorsicht! Bei Vorsicht! Erst testen, dann warnen!
Zitat von Valle:
LIKE ist generell sehr langsam
Nö, nicht bei einer Suche à la "LIKE 'xyz%'" (also nur am Anfang). Ansonsten wird jeder Datensatz angefasst. Das stimmt. Aber ob ich da dann noch ein 'REPLACE' rüber jage, macht den Kohl auch nicht fett.

Allerdings kann man das auch schneller machen. Dazu müssten die Suchtexte und die Pattern in 'Wörter' bzw. Worteile zerlegt werden. Die kann man dann indizieren und schnell danach suchen. Aber bei 32k Einträgen und ein paar Zugriffen pro Tag... WTF. Da geht so schnell kein Server in den 'Exitus'..
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#10

Re: "Umgedrehtes" LIKE-Statement?

  Alt 9. Mär 2010, 23:05
Zitat von alzaimar:
Nö, nicht bei einer Suche à la "LIKE 'xyz%'" (also nur am Anfang).
Das weiß ich, in dem Fall ist das aber nicht so...

Zitat von alzaimar:
Ansonsten wird jeder Datensatz angefasst. Das stimmt. Aber ob ich da dann noch ein 'REPLACE' rüber jage, macht den Kohl auch nicht fett.
Das kommt auf die Menge an. Bei ~32000 ist das nicht wirklich relevant, da hast du Recht. Ich habe schon ganz andere Tabellen gesehen, da würde ich mir eher Gedanken machen. Ich konnte ja nicht wissen, um was für eine Tabelle es sich da handelt und wie oft das aufgerufen wird.

Ich bin auch der Meinung, es ist nie falsch, auf so Sachen aufmerksam zu machen. Die Tatsache, dass so ein Replace dann über alle Datensätze geht, ist durchaus wissenswert - egal ob an dieser Stelle nun relevant oder nicht.

Zitat von alzaimar:
Allerdings kann man das auch schneller machen. Dazu müssten die Suchtexte und die Pattern in 'Wörter' bzw. Worteile zerlegt werden. Die kann man dann indizieren und schnell danach suchen. Aber bei 32k Einträgen und ein paar Zugriffen pro Tag... WTF. Da geht so schnell kein Server in den 'Exitus'..
Ich hoffe du hast mitbekommen, dass er die 32k erst erwähnte, als ich meinen Hinweiß schon geschrieben hatte! Aber Hauptsache mir erstmal unterstellen, ich hätte die Sache nie getestet oder erlebt. Mein nächster Post wäre gewesen, er sollte es doch mal testen bei den 32k. "Erst testen, dann warnen!"

Liebe Grüße,
Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 11:35 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