En av de många MySQL-strängfunktionerna är SOUNDEX() fungera. Denna funktion returnerar en Soundex-sträng från en given sträng. Om två ord låter likadana bör de ha samma Soundex-sträng. Om två ord låter lika, men inte exakt likadana, kan deras Soundex-sträng se likadana ut men inte exakt likadana.
Den här artikeln innehåller ett gäng Soundex-exempel för att visa hur SOUNDEX() funktionen fungerar i MySQL.
Syntax
Låt oss först titta på syntaxen:
SOUNDEX(str)
Där str är strängen som du behöver Soundex-strängen till.
Exempel
Här är ett exempel på att hämta Soundex-strängen från en sträng:
SELECT SOUNDEX('Sure'); Resultat:
+-----------------+
| SOUNDEX('Sure') |
+-----------------+
| S600 |
+-----------------+
Så i det här fallet ordet Sure har en Soundex-sträng på S600 .
Exempel – Exakt matchning
Här är ett exempel på där två ord låter likadana (eller mycket lika), och därför delar de samma Soundex-sträng:
SELECT
SOUNDEX('Sure') AS Sure,
SOUNDEX('Shore') AS Shore; Resultat:
+------+-------+ | Sure | Shore | +------+-------+ | S600 | S600 | +------+-------+
Här är några exempel på mer exakt matchning:
SELECT
SOUNDEX('Dam') AS Dam,
SOUNDEX('Damn') AS Damn,
SOUNDEX('Too') AS Too,
SOUNDEX('Two') AS Two; Resultat:
+------+------+------+------+ | Dam | Damn | Too | Two | +------+------+------+------+ | D500 | D500 | T000 | T000 | +------+------+------+------+
Exempel – Icke matchande
Här är ett exempel på där två ord inte låter likadana, och därför har de olika Soundex-strängar:
SELECT
SOUNDEX('Water') AS Water,
SOUNDEX('Coffee') AS Coffee; Resultat:
+-------+--------+ | Water | Coffee | +-------+--------+ | W360 | C100 | +-------+--------+
Som du kan se är Soundex-strängen helt annorlunda för dessa två ord.
Exempel – Olika stavningar
Här är ett exempel på två ord som har olika stavningar (beroende på vilket land du kommer från):
SELECT
SOUNDEX('Color') AS 'Color',
SOUNDEX('Colour') AS 'Colour'; Resultat:
+-------+--------+ | Color | Colour | +-------+--------+ | C460 | C460 | +-------+--------+
Så vi kan se att sådana ord kommer att dela samma Soundex-sträng (så länge de uttalas på samma sätt).
Exempel – Samma ljud, olika ljudex
Det finns fall där ord låter lika, men de har olika Soundex-strängar. Den vanligaste orsaken till detta är att de börjar med en annan bokstav, varav en är en tyst bokstav. Du kanske har märkt från de tidigare exemplen att Soundex-strängen börjar med den första bokstaven i strängen.
Därför, om du har två ord som uttalas exakt lika, men de börjar med en annan bokstav, kommer de att ha en annan Soundex-sträng.
Här är några exempel:
SELECT
SOUNDEX('Hole') AS 'Hole',
SOUNDEX('Whole') AS 'Whole',
SOUNDEX('Our') AS Our,
SOUNDEX('Hour') AS Hour; Resultat:
+------+-------+------+------+ | Hole | Whole | Our | Hour | +------+-------+------+------+ | H400 | W400 | O600 | H600 | +------+-------+------+------+
Paren i det här exemplet har olika Soundex-strängar enbart för att deras första bokstav är annorlunda.
Exempel – Soundex i en databasfråga
Här är ett exempel på hur du använder SOUNDEX() i en databasfråga. I det här fallet letar vi efter alla skivor som låter som "Ay See Dee Ci":
SELECT ArtistName
FROM Artists
WHERE SOUNDEX(ArtistName) = SOUNDEX('Ay See Dee Ci'); Resultat:
+------------+ | ArtistName | +------------+ | AC/DC | +------------+
Alltså AC/DC har tydligen samma Soundex-kod som Ay See Dee Ci (åtminstone när du använder MySQL) Bara för att vara säker, här är Soundex-koderna för båda dessa strängar:
SELECT
SOUNDEX('AC/DC') AS 'AC/DC',
SOUNDEX('Ay See Dee Ci') AS 'Ay See Dee Ci'; Resultat:
+-------+---------------+ | AC/DC | Ay See Dee Ci | +-------+---------------+ | A232 | A232 | +-------+---------------+
Ett alternativ:LÅTER SOM
En alternativ fråga kunde ha konstruerats med SOUNDS LIKE istället för SOUNDEX() fungera. Så här:
SELECT ArtistName FROM Artists WHERE ArtistName SOUNDS LIKE 'Ay See Dee Ci';
Resultat:
+------------+ | ArtistName | +------------+ | AC/DC | +------------+