Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Suche nach Namen

Empfohlene Antworten

Veröffentlicht

Folgendes Problem

Ich suche eine Möglichkeit, Namen aus einer MySQL - Tabelle zu filtern.

Mit dem Befehl "$sql="select *....." klappt das natürlich ganz einfach, ABER

wenn ich mich jetzt verschreibe, z.B. statt nem v im Namen ein w schreibe soll er mir trotzdem ein ergebnis liefern. Hab es jetzt mit folgendem Script probiert:

$laenge=strlen($suche);
for($leng=$laenge;$leng>=1;$leng--)
{
$rest = substr("$suche", 0, $leng);
echo $rest."<br>";
$sql="select * from $table_pe where pers_name like '$rest%' ORDER BY pers_name,pers_vname";
$persult=mysql_query($sql,$conn_id);
$perszahl=mysql_num_rows($persult);
if($perszahl>=1)
{
break;
}
}[/PHP]

[/color]

wobei in $suche der zu suchende Name steht.

Funktioniert soweit auch ganz gut, bei den meisten Namen.

Wenn ich jetzt aber Lewo eingebe, der sich eigentlich Lewo schreibt, werden mir alle Datensätze ausgegeben, die sich am Anfang mit Lew schreiben, also nicht den gesuchten Levo.

hm da wirste mit regulären Ausdrücken rann müssen, aber wie genau, kann ich dir auch nicht sagen.

Funktioniert soweit auch ganz gut, bei den meisten Namen.

Viel zu kompliziert ;)

select * from $table_pe where soundex(pers_name) = soundex($suche) ORDER BY pers_name,pers_vname

soundex ist ne interessante (und eigentlich garnich komplizierte) Funktion, mit der man eine Art Klangwert ermitteln kann. Ähnliche Namen liefern also denselben Wert (was du ja auch suchst).

Und noch ein Stück kürzer:

SELECT * FROM $table_pe WHERE pers_name SOUNDS LIKE $suche ORDER BY pers_name, pers_vname;

Das einzige Manko an SOUNDS LIKE bzw. SOUNDEX() ist, dass dieser Algorhythmus auf die englische Sprache ausgelegt ist. Es kann (muss aber nicht) dazu kommen, dass evtl. deutsche Vertipper nicht immer gefunden werden. Allerdings ist meine eigene Erfahrung mit dieser Funktion sehr gut.

Und noch ein Stück kürzer:

SELECT * FROM $table_pe WHERE pers_name SOUNDS LIKE $suche ORDER BY pers_name, pers_vname;

Cool, hab ich noch nie gehört.

Gibts dass in allen SQL derivaten oder ist das z.b. MYSQL spezifisch?

Also in mySQL sowie MS-SQL ist es vorhanden.Laut meinem Google auch in Oracle. Also gehe ich mal davon aus, dass es in diversen Datenbanken vorhanden ist.

Also in mySQL sowie MS-SQL ist es vorhanden.Laut meinem Google auch in Oracle. Also gehe ich mal davon aus, dass es in diversen Datenbanken vorhanden ist.

Gut zu wissen, besten dank!

hm schade, hab grad ma die INFORMIX hilfe durchforstet, aber da gibts sowas anscheinend nicht. (Oder es heisst anders?)

muss ich wohl mit ner eigenen stored prozedure rann.

Das einzige Manko an SOUNDS LIKE bzw. SOUNDEX() ist, dass dieser Algorhythmus auf die englische Sprache ausgelegt ist.

Naja, so arg unterscheidet sich die deutsche Sprache auch nicht von der englischen, also was den Algorhytmus angeht. Vokale werden vom SoundEx Algo. z.B. als 0 gewertet, fallen also weg. Und ein T ist ein T, egal ob deutsch oder englisch. Wir haben SoundEx bei uns im Einsatz (also einem Prog. von uns, allerdings nich die PHP Version- die sollte aber auf demselben Algo beruhen)) und es gibt eigentlich keine Probs damit.

Für die, die es interessiert: Der Algorhythmus (engl.)

http://www.archives.gov/research_room/genealogy/census/soundex.html

Folgende Buchstaben werden vom Algorhythmus als "gleich" gewertet (alle nicht genannten Buchstaben/Zeichen werden nicht gewertet):

B, F, P, V

C, G, J, K, Q, S, X, Z

D, T

L

M, N

R

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.