sql >> Database teknologi >  >> RDS >> Mysql

MySQL SOUNDEX() Eksempler

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

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

  1. ORA-04021:timeout opstod, mens man ventede på at låse objektet

  2. er der en PRODUKT funktion ligesom der er en SUM funktion i Oracle SQL?

  3. LAST_DAY() Eksempler – MySQL

  4. Begrænsning for kun én post markeret som standard