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