![]() |
Datenbank: MySQL • Zugriff über: PHP
In allen Felder suchen
Hallo,
ich bräuchte noch mal eure Hilfe. Also wie man nach einem oder mehrern Feldern filtert, weiß ich.
SQL-Code:
Aber wie sieht die Abfrage aus, um in allen Feldern nach Müller zu suchen?
SELECT name, vorname, telefonnumer FROM adressen where name='Müller'
|
Re: In allen Felder suchen
Indem du alle aufführst?
SQL-Code:
SELECT name, vorname, telefonnumer
FROM adressen WHERE name LIKE '%Müller%' OR vorname LIKE '%Müller%' OR telefonnumer LIKE '%Müller%' |
Re: In allen Felder suchen
Ja, gut. Aber gibt es da keine elegantere Lösung?
|
Re: In allen Felder suchen
Ein bißchen eleganter ists imho so (verkürzt das Statement ein wenig):
SQL-Code:
Ist aber Geschmackssache. :)
SELECT name, vorname, telefonnumer FROM adressen where name || ' ' || vorname || ' ' || telefonnumer like '%Müller%'
|
Re: In allen Felder suchen
Zitat:
SQL-Code:
) wird das keinen großen Unterschied machen, aber bei Mustern à la "Müller%" kann ein guter Optimizer einen normalen Index für die Suche verwenden. Und wird es aller Wahrscheinlichkeit auch tun. (Es wird ja nach 'Müller' am Anfang eines Strings gesucht).
LIKE "%Müller%'
Versuche doch, einen Querygenerator zu schreiben, der über alle (Var)Char-Felder deiner Tabelle iteriert und das SELECT entsprechend aufbaut. Oder Du kapselst das in einer Stored Procedure. Versuche, die Tabelle umzuformen, nur um eine 'elegante' Lösung herbeizuführen sind eine schöne Übung für die Normalisierung, taugen in der Praxis jedoch nur selten, da die Eleganz von der mangelnden Performance aufgefressen wird. |
Re: In allen Felder suchen
Schau dir mal für MySQL die Möglichkeiten einer
![]() |
Re: In allen Felder suchen
Zitat:
|
Re: In allen Felder suchen
Das LIKE hebelt alle Indices aus. Das mal vorab. Das nächste wäre einem zuzumuten, zwischen Groß/Kleinschreibung zu unterscheiden. Also kommt notgedrungen noch UPPER ins Spiel. Um das Ganze jetzt etwas einzuschränken, müssen die Felder also genau angesprochen werden. Siehe Omatas Beitrag.
|
Re: In allen Felder suchen
Hallo,
eine weitere Alternative wäre eine zusätzliche Spalte in der Datenbank, in die Du die Inhalte der zu durchsuchenden Spalten in reiner Großschrift ablegst.
SQL-Code:
Beim Speichern der Daten musst Du dann halt (per Trigger?) diese zusätzliche Spalte füllen. Die Spalte muss "breit" genug sein, um die Inhalte der anderen Spalten bei jeweils maximaler Füllung aufnehmen zu können.
SELECT name, vorname, telefonnumer FROM adressen where Sammelspalte like '%Müller%'
|
Re: In allen Felder suchen
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:49 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