En af de mange MySQL-strengfunktioner er SOUNDEX()
fungere. Denne funktion returnerer en Soundex-streng fra en given streng. Hvis to ord lyder ens, skal de have den samme Soundex-streng. Hvis to ord lyder ens, men ikke helt ens, kan deres Soundex-streng ligne, men ikke helt ens.
Denne artikel indeholder en masse Soundex-eksempler for at demonstrere, hvordan SOUNDEX()
funktion fungerer i MySQL.
Syntaks
Lad os først se på syntaksen:
SOUNDEX(str)
Hvor str
er den streng, som du skal bruge Soundex-strengen til.
Eksempel
Her er et eksempel på at hente Soundex-strengen fra en streng:
SELECT SOUNDEX('Sure');
Resultat:
+-----------------+ | SOUNDEX('Sure') | +-----------------+ | S600 | +-----------------+
Så i dette tilfælde ordet Sure
har en Soundex-streng på S600
.
Eksempel – eksakt match
Her er et eksempel på, hvor to ord lyder ens (eller meget ens), og derfor deler de samme Soundex-streng:
SELECT SOUNDEX('Sure') AS Sure, SOUNDEX('Shore') AS Shore;
Resultat:
+------+-------+ | Sure | Shore | +------+-------+ | S600 | S600 | +------+-------+
Her er nogle eksempler på mere eksakt match:
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 | +------+------+------+------+
Eksempel – Ikke match
Her er et eksempel på, hvor to ord ikke lyder ens, og derfor har de forskellige Soundex-strenge:
SELECT SOUNDEX('Water') AS Water, SOUNDEX('Coffee') AS Coffee;
Resultat:
+-------+--------+ | Water | Coffee | +-------+--------+ | W360 | C100 | +-------+--------+
Som du kan se, er Soundex-strengen helt anderledes for disse to ord.
Eksempel – Forskellige stavemåder
Her er et eksempel på to ord, der har forskellige stavemåder (afhængigt af hvilket land du kommer fra):
SELECT SOUNDEX('Color') AS 'Color', SOUNDEX('Colour') AS 'Colour';
Resultat:
+-------+--------+ | Color | Colour | +-------+--------+ | C460 | C460 | +-------+--------+
Så vi kan se, at sådanne ord vil dele den samme Soundex-streng (så længe de udtales på samme måde).
Eksempel – Samme lyd, forskelligt lydeksempel
Der er tilfælde, hvor ord lyder ens, men de har forskellige Soundex-strenge. Den mest almindelige årsag til dette er, at de starter med et andet bogstav, hvoraf det ene er et tavst bogstav. Du har måske bemærket fra de tidligere eksempler, at Soundex-strengen starter med det første bogstav i strengen.
Derfor, hvis du har to ord, der udtales nøjagtigt ens, men de starter med et andet bogstav, vil de have en anden Soundex-streng.
Her er nogle eksempler:
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 | +------+-------+------+------+
Parrene i dette eksempel har forskellige Soundex-strenge, udelukkende fordi deres første bogstav er forskelligt.
Eksempel – Soundex i en databaseforespørgsel
Her er et eksempel på brug af SOUNDEX()
i en databaseforespørgsel. I dette tilfælde leder vi efter alle plader, der lyder som "Ay See Dee Ci":
SELECT ArtistName FROM Artists WHERE SOUNDEX(ArtistName) = SOUNDEX('Ay See Dee Ci');
Resultat:
+------------+ | ArtistName | +------------+ | AC/DC | +------------+
Så AC/DC
har tilsyneladende den samme Soundex-kode som Ay See Dee Ci
(i det mindste når du bruger MySQL) Bare for at være sikker, her er Soundex-koderne for begge disse strenge:
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 | +-------+---------------+
Et alternativ:LYDER SOM
En alternativ forespørgsel kunne være blevet konstrueret ved hjælp af SOUNDS LIKE
i stedet for SOUNDEX()
fungere. Sådan:
SELECT ArtistName FROM Artists WHERE ArtistName SOUNDS LIKE 'Ay See Dee Ci';
Resultat:
+------------+ | ArtistName | +------------+ | AC/DC | +------------+