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 |
+---------+------------------+-----------------+