![]() |
Datenbank: MySQL • Version: 5.1.41 • Zugriff über: PHP
"Umgedrehtes" LIKE-Statement?
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:
SQL-Code:
Das würde alle Adressen in der Datenbank matchen, die ein "@mail.de" haben.
SELECT COUNT(*) FROM testseite WHERE spammail LIKE '%@mail.de';
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. |
Re: "Umgedrehtes" LIKE-Statement?
Du meinst nicht zufällig das hier?
SQL-Code:
SELECT COUNT(*) FROM testseite WHERE spammail NOT LIKE '%@mail.de';
|
Re: "Umgedrehtes" LIKE-Statement?
Sowas vielleicht:
SQL-Code:
:?:
SELECT COUNT(*) FROM testseite WHERE 'test@mail.de' LIKE spammail;
(Du musst aber natürlich das * durch % ersetzen) |
Re: "Umgedrehtes" LIKE-Statement?
@Julius: Ja, genau das hab ich gesucht. Dass ich allerdings "*" durch "%" ersetzen muss, ist etwas.... unglücklich... :?
|
Re: "Umgedrehtes" LIKE-Statement?
Zitat:
SQL-Code:
SELECT COUNT(*) FROM testseite WHERE 'test@mail.de' LIKE replace(spammail, '*', '%');
|
Re: "Umgedrehtes" LIKE-Statement?
Hm, ich hab jetzt ein "Suchen&Ersetzen" über die SQL-Daten laufen lassen. :) Ich werd deinen Vorschlag beim nächsten Mal umsetzen. :)
|
Re: "Umgedrehtes" LIKE-Statement?
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. :mrgreen: Liebe Grüße, Valle |
Re: "Umgedrehtes" LIKE-Statement?
~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. ;)
|
Re: "Umgedrehtes" LIKE-Statement?
Zitat:
Zitat:
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'.. |
Re: "Umgedrehtes" LIKE-Statement?
Zitat:
Zitat:
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:
Liebe Grüße, Valle |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz