Database Reference
In-Depth Information
SELECT
*
FROM
actors
WHERE
name =
'Broos Wlis'
;
Selbst ein Trigramm hilft uns hier nicht weiter (wir verwenden % statt =).
SELECT
*
FROM
actors
WHERE
name %
'Broos Wlis'
;
Nutzen Sie Metaphone, einen Algorithmus, der einen String in eine Art Laut-
schrift umwandelt. Sie können festlegen, wie viele Zeichen der Ausgabestring
hat. Zum Beispiel ist das Sieben-Zeichen-Metaphone für den Namen Aaron
Eckhart
ARNKHRT
.
Um alle Filme zu finden, in denen ein Schauspieler mitgewirkt hat, der wie
„Broos Wils“ klingt, können wir die Query über die Metaphone-Ausgabe lau-
fen lassen. Beachten Sie, dass ein natürlicher Join (
NATURAL JOIN
)ein
INNER
JOIN
ist, bei dem der Join automatisch bei passenden Spaltennamen erfolgt
(z. B.
movies.actor
_
id= movies
_
actors.actor
_
id
).
SELECT
title
FROM
movies NATURAL
JOIN
movies
_
actors NATURAL
JOIN
actors
WHERE
metaphone(name, 6) = metaphone(
'Broos Wils'
, 6);
title
-----------------------------
The Fifth Element
Twelve Monkeys
Armageddon
Die Hard
Pulp Fiction
The Sixth Sense
:
Wenn Sie sich die Online-Dokumentation ansehen, sehen Sie, dass das
fuz-
zystrmatch
-Modul weitere Funktionen enthält:
dmetaphone
(double metapho-
ne),
dmetaphone
_
alt
(für die alternative Aussprache von Namen) und
soundex
(ein wirklich alter Algorithmus aus den 1880ern, entwickelt für die amerika-
nische Volkszählung zum Vergleich gängiger amerikanischer Nachnamen).
Sie können die Ergebnisse der Funktionen untersuchen, indem Sie sich de-
ren Ausgabe ansehen.
SELECT
name, dmetaphone(name), dmetaphone
_
alt(name),
metaphone(name, 8), soundex(name)
FROM
actors;