In MariaDB kunt u SOUNDS LIKE
. gebruiken in een zoekopdracht om woorden te matchen die hetzelfde klinken.
Syntaxis
De syntaxis gaat als volgt:
expr1 SOUNDS LIKE expr2
Het is hetzelfde als dit te doen:SOUNDEX(expr1) = SOUNDEX(expr2)
.
Soundex is een fonetisch algoritme voor het indexeren van namen op geluid, zoals uitgesproken in het Engels. Als twee woorden hetzelfde klinken, moeten ze dezelfde Soundex-snaar hebben. Als twee woorden hetzelfde klinken, maar niet precies hetzelfde, kan hun Soundex-snaar er hetzelfde uitzien, maar niet precies hetzelfde.
Voorbeeld
Hier is een eenvoudig voorbeeld:
SELECT 'Two' SOUNDS LIKE 'Too';
Resultaat:
+-------------------------+ | 'Two' SOUNDS LIKE 'Too' | +-------------------------+ | 1 | +-------------------------+
In dit geval klinken de twee woorden hetzelfde.
We kunnen de SOUNDEX()
. gebruiken functie om de Soundex-string van elk woord terug te geven:
SELECT
SOUNDEX('Two'),
SOUNDEX('Too');
Resultaat:
+----------------+----------------+ | SOUNDEX('Two') | SOUNDEX('Too') | +----------------+----------------+ | T000 | T000 | +----------------+----------------+
De Soundex snaren zijn identiek. Dit is waarom SOUNDS LIKE
1
geretourneerd .
Geen overeenkomst
Hier is een voorbeeld van twee woorden die niet hetzelfde klinken:
SELECT 'Cat' SOUNDS LIKE 'Dog';
Resultaat:
+-------------------------+ | 'Cat' SOUNDS LIKE 'Dog' | +-------------------------+ | 0 | +-------------------------+
In dit geval kregen we 0
, omdat de woorden niet hetzelfde klinken. Vermoedelijk zijn hun Soundex-snaren anders. Laten we eens kijken:
SELECT
SOUNDEX('Cat'),
SOUNDEX('Dog');
Resultaat:
+----------------+----------------+ | SOUNDEX('Cat') | SOUNDEX('Dog') | +----------------+----------------+ | C300 | D200 | +----------------+----------------+
Ja. Verschillende Soundex-snaren.
Databasevoorbeeld
Hier is een voorbeeld van het gebruik van SOUNDS LIKE
in de WHERE
clausule van een databasequery:
SELECT
PetName,
SOUNDEX(PetName),
SOUNDEX('Wagg')
FROM Pets
WHERE PetName SOUNDS LIKE 'Wagg';
Resultaat:
+---------+------------------+-----------------+ | PetName | SOUNDEX(PetName) | SOUNDEX('Wagg') | +---------+------------------+-----------------+ | Wag | W200 | W200 | +---------+------------------+-----------------+
Hier gebruikt het de SOUNDEX()
functie om hetzelfde te doen:
SELECT
PetName,
SOUNDEX(PetName),
SOUNDEX('Wagg')
FROM Pets
WHERE SOUNDEX(PetName) = SOUNDEX('Wagg');
Resultaat:
+---------+------------------+-----------------+ | PetName | SOUNDEX(PetName) | SOUNDEX('Wagg') | +---------+------------------+-----------------+ | Wag | W200 | W200 | +---------+------------------+-----------------+