Alle Spalten einer Tabelle durchsuchen
am 01.05.2006 13:58:13 von jonas
Hallo,
ich will eine Tabelle von angemeldeten Benutzern nach einem Suchwort durchsuchen. Dabei hat die
Tabelle mehrere Spalten wie vorname, nachname, plz, etc..
Jetzt will ich aber nicht solch ein Query schreiben wie:
SELECT * FROM users WHERE vorname LIKE '%suchtext%' OR nachname LIKE '%suchtext%' ..
sondern lieber alle spalten vorher zu einer spalte verbinden und dann in etwa soetwas machen:
SELECT * FROM users WHERE (vorname + nachname + plz) LIKE '%suchtext%' ...
Das funktioniert so aber nicht, da vorname + nachname = 0 ergibt.
Kann mir da jemand helfen?
Danke,
Jonas
Re: Alle Spalten einer Tabelle durchsuchen
am 01.05.2006 15:04:16 von Johannes Vogel
Hi Jonas
Jonas wrote:
> ich will eine Tabelle von angemeldeten Benutzern nach einem Suchwort
> durchsuchen. Dabei hat die Tabelle mehrere Spalten wie vorname,
> nachname, plz, etc..
> Jetzt will ich aber nicht solch ein Query schreiben wie:
> SELECT * FROM users WHERE vorname LIKE '%suchtext%' OR nachname LIKE
> '%suchtext%' ..
> sondern lieber alle spalten vorher zu einer spalte verbinden und dann in
> etwa soetwas machen:
> SELECT * FROM users WHERE (vorname + nachname + plz) LIKE '%suchtext%' ...
> Das funktioniert so aber nicht, da vorname + nachname = 0 ergibt.
> Kann mir da jemand helfen?
Also MySQL verbindet Textattribute mittels concat().
select * from users
where concat(vorname,nachname,plz) like '%suchtext%';
Das würde dann aber bedeuten, dass der Hans Wurst auch mittels "answu"
gefunden werden kann. Vielleicht magst du deshalb ein Trennzeichen
zwischenschalten.
Alternativ könntest du im Manual unter Volltextsuche nachschlagen und
diese so verwenden, wie es das DBS dir empfiehlt.
12.7. Full-Text Search Functions
http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html
Damit habe ich dir auch gerade den Link zum Manual gegeben. Ich schlage
vor, dass du dich damit noch etwas mehr befasst...
HTH, Johannes