In MariaDB können Sie SOUNDS LIKE
verwenden in einer Abfrage, um ähnlich klingende Wörter abzugleichen.
Syntax
Die Syntax lautet wie folgt:
expr1 SOUNDS LIKE expr2
Es ist dasselbe wie hier:SOUNDEX(expr1) = SOUNDEX(expr2)
.
Soundex ist ein phonetischer Algorithmus zum Indizieren von Namen nach Ton, wie sie im Englischen ausgesprochen werden. Wenn zwei Wörter gleich klingen, sollten sie den gleichen Soundex-String haben. Wenn zwei Wörter ähnlich, aber nicht genau gleich klingen, sieht ihre Soundex-Zeichenfolge möglicherweise ähnlich, aber nicht genau gleich aus.
Beispiel
Hier ist ein einfaches Beispiel:
SELECT 'Two' SOUNDS LIKE 'Too';
Ergebnis:
+-------------------------+ | 'Two' SOUNDS LIKE 'Too' | +-------------------------+ | 1 | +-------------------------+
In diesem Fall klingen die beiden Wörter gleich.
Wir können den SOUNDEX()
verwenden Funktion, um den Soundex-String jedes Wortes zurückzugeben:
SELECT
SOUNDEX('Two'),
SOUNDEX('Too');
Ergebnis:
+----------------+----------------+ | SOUNDEX('Two') | SOUNDEX('Too') | +----------------+----------------+ | T000 | T000 | +----------------+----------------+
Die Soundex-Saiten sind identisch. Deshalb SOUNDS LIKE
gab 1
zurück .
Keine Übereinstimmung
Hier ist ein Beispiel für zwei Wörter, die nicht gleich klingen:
SELECT 'Cat' SOUNDS LIKE 'Dog';
Ergebnis:
+-------------------------+ | 'Cat' SOUNDS LIKE 'Dog' | +-------------------------+ | 0 | +-------------------------+
In diesem Fall haben wir 0
erhalten , weil die Wörter nicht gleich klingen. Vermutlich sind ihre Soundex-Saiten anders. Finden wir es heraus:
SELECT
SOUNDEX('Cat'),
SOUNDEX('Dog');
Ergebnis:
+----------------+----------------+ | SOUNDEX('Cat') | SOUNDEX('Dog') | +----------------+----------------+ | C300 | D200 | +----------------+----------------+
Ja. Verschiedene Soundex-Saiten.
Datenbankbeispiel
Hier ist ein Beispiel für die Verwendung von SOUNDS LIKE
im WHERE
Klausel einer Datenbankabfrage:
SELECT
PetName,
SOUNDEX(PetName),
SOUNDEX('Wagg')
FROM Pets
WHERE PetName SOUNDS LIKE 'Wagg';
Ergebnis:
+---------+------------------+-----------------+ | PetName | SOUNDEX(PetName) | SOUNDEX('Wagg') | +---------+------------------+-----------------+ | Wag | W200 | W200 | +---------+------------------+-----------------+
Hier wird der SOUNDEX()
verwendet Funktion, um dasselbe zu tun:
SELECT
PetName,
SOUNDEX(PetName),
SOUNDEX('Wagg')
FROM Pets
WHERE SOUNDEX(PetName) = SOUNDEX('Wagg');
Ergebnis:
+---------+------------------+-----------------+ | PetName | SOUNDEX(PetName) | SOUNDEX('Wagg') | +---------+------------------+-----------------+ | Wag | W200 | W200 | +---------+------------------+-----------------+