Wenn Name nicht in DB vorhanden ist, ähnliche Treffer anzeigen
am 20.04.2006 20:41:30 von Lammy
Hallo,
in einer MySQL-DB soll man nach einem Namen suchen können. Wenn dieser Name
nicht in der DB existiert, soll der Name von der DB geliefert werden, der
von der alphabetischen Reihenfolge her danach kommt. (z.B. wird nach
Schumann gesucht und nicht gefunden, und daher Schuster ausgegeben).
Gibt es für so etwas schon eine eingebaute Funktion oder muss ich da selber
etwas basteln?
Danke für jeden Tipp und viele Grüße
Re: Wenn Name nicht in DB vorhanden ist, ähnlicheTreffer anzeigen
am 20.04.2006 22:29:42 von Sven Paulus
Lammy wrote:
> in einer MySQL-DB soll man nach einem Namen suchen können. Wenn dieser=
Name
> nicht in der DB existiert, soll der Name von der DB geliefert werden, de=
r
> von der alphabetischen Reihenfolge her danach kommt. (z.B. wird nach
> Schumann gesucht und nicht gefunden, und daher Schuster ausgegeben).
> Gibt es für so etwas schon eine eingebaute Funktion oder muss ich da s=
elber
> etwas basteln?
mysql> CREATE TABLE tabelle ( name VARCHAR(30), KEY (name) );
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO tabelle VALUES ("Maier"),("Mayer"),("Schuster");
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> SELECT name FROM tabelle WHERE name >=3D "Maier" LIMIT 1;
+-------+
| name |
+-------+
| Maier |
+-------+
1 row in set (0.01 sec)
mysql> SELECT name FROM tabelle WHERE name >=3D "Mauer" LIMIT 1;
+-------+
| name |
+-------+
| Mayer |
+-------+
1 row in set (0.00 sec)
Dabei noch ein bisserl mit collations rumspielen, damit Du die
gewuenschte Sortierreihenfolge bei Umlauten bekommst.
Re: Wenn Name nicht in DB vorhanden ist, ähnliche Treffer anzeigen
am 21.04.2006 12:32:56 von Harald Stowasser
Lammy schrieb:
> Hallo,
>
> in einer MySQL-DB soll man nach einem Namen suchen können. Wenn dieser Name
> nicht in der DB existiert, soll der Name von der DB geliefert werden, der
> von der alphabetischen Reihenfolge her danach kommt. (z.B. wird nach
> Schumann gesucht und nicht gefunden, und daher Schuster ausgegeben).
> Gibt es für so etwas schon eine eingebaute Funktion oder muss ich da selber
> etwas basteln?
Eventuell magst du auch "expr1 SOUNDS LIKE expr2" oder SOUNDEX()[1].
Obwohl der Algorithmus von SOUNDEX für de nicht optimal ist :-(
[1]http://dev.mysql.com/doc/refman/5.0/en/string-functions.h tml