sql >> Database >  >> RDS >> Mysql

MySQL SOUNDEX() Voorbeelden

Een van de vele MySQL-tekenreeksfuncties is de SOUNDEX() functie. Deze functie retourneert een Soundex-string van een gegeven string. 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.

Dit artikel bevat een aantal Soundex-voorbeelden om te demonstreren hoe de SOUNDEX() functie werkt in MySQL.

Syntaxis

Laten we eerst eens kijken naar de syntaxis:

SOUNDEX(str)

Waar str is de snaar waaraan u de Soundex-snaar nodig hebt.

Voorbeeld

Hier is een voorbeeld van het ophalen van de Soundex-string uit een string:

SELECT SOUNDEX('Sure');

Resultaat:

+-----------------+
| SOUNDEX('Sure') |
+-----------------+
| S600            |
+-----------------+

Dus in dit geval het woord Sure heeft een Soundex-string van S600 .

Voorbeeld – Exacte overeenkomst

Hier is een voorbeeld van waar twee woorden hetzelfde klinken (of erg op elkaar lijken), en daarom delen ze dezelfde Soundex-snaar:

SELECT 
    SOUNDEX('Sure') AS Sure, 
    SOUNDEX('Shore') AS Shore;

Resultaat:

+------+-------+
| Sure | Shore |
+------+-------+
| S600 | S600  |
+------+-------+

Hier zijn wat meer exacte matchvoorbeelden:

SELECT 
    SOUNDEX('Dam') AS Dam,
    SOUNDEX('Damn') AS Damn,
    SOUNDEX('Too') AS Too,
    SOUNDEX('Two') AS Two;

Resultaat:

+------+------+------+------+
| Dam  | Damn | Too  | Two  |
+------+------+------+------+
| D500 | D500 | T000 | T000 |
+------+------+------+------+

Voorbeeld – Niet-overeenkomend

Hier is een voorbeeld van waar twee woorden niet hetzelfde klinken en daarom verschillende Soundex-snaren hebben:

SELECT 
    SOUNDEX('Water') AS Water, 
    SOUNDEX('Coffee') AS Coffee;

Resultaat:

+-------+--------+
| Water | Coffee |
+-------+--------+
| W360  | C100   |
+-------+--------+

Zoals je kunt zien, is de Soundex-snaar compleet anders voor deze twee woorden.

Voorbeeld – Verschillende spellingen

Hier is een voorbeeld van twee woorden die verschillend worden gespeld (afhankelijk van het land waar je vandaan komt):

SELECT 
  SOUNDEX('Color') AS 'Color',
  SOUNDEX('Colour') AS 'Colour';

Resultaat:

+-------+--------+
| Color | Colour |
+-------+--------+
| C460  | C460   |
+-------+--------+

We kunnen dus zien dat dergelijke woorden dezelfde Soundex-reeks delen (zolang ze op dezelfde manier worden uitgesproken).

Voorbeeld – Hetzelfde geluid, andere Soundex

Er zijn gevallen waarin woorden hetzelfde klinken, maar ze hebben verschillende Soundex-snaren. De meest voorkomende reden hiervoor is dat ze met een andere letter beginnen, waaronder een stille letter. Het is je misschien opgevallen uit de vorige voorbeelden dat de Soundex-string begint met de eerste letter van de string.

Als je dus twee woorden hebt die precies hetzelfde worden uitgesproken, maar ze beginnen met een andere letter, hebben ze een andere Soundex-reeks.

Hier zijn enkele voorbeelden:

SELECT
    SOUNDEX('Hole') AS 'Hole',
    SOUNDEX('Whole') AS 'Whole',
    SOUNDEX('Our') AS Our,
    SOUNDEX('Hour') AS Hour;

Resultaat:

+------+-------+------+------+
| Hole | Whole | Our  | Hour |
+------+-------+------+------+
| H400 | W400  | O600 | H600 |
+------+-------+------+------+

De paren in dit voorbeeld hebben verschillende Soundex-snaren, alleen omdat hun eerste letter anders is.

Voorbeeld – Soundex in een databasequery

Hier is een voorbeeld van het gebruik van SOUNDEX() in een databasequery. In dit geval zijn we op zoek naar platen die klinken als "Ay See Dee Ci":

SELECT ArtistName 
FROM Artists
WHERE SOUNDEX(ArtistName) = SOUNDEX('Ay See Dee Ci');

Resultaat:

+------------+
| ArtistName |
+------------+
| AC/DC      |
+------------+

Dus AC/DC heeft blijkbaar dezelfde Soundex-code als Ay See Dee Ci (tenminste bij gebruik van MySQL) Voor de zekerheid, hier zijn de Soundex-codes voor beide strings:

SELECT 
  SOUNDEX('AC/DC') AS 'AC/DC',
  SOUNDEX('Ay See Dee Ci') AS 'Ay See Dee Ci';

Resultaat:

+-------+---------------+
| AC/DC | Ay See Dee Ci |
+-------+---------------+
| A232  | A232          |
+-------+---------------+

Een alternatief:GELUIDEN ALS

Een alternatieve zoekopdracht had kunnen worden gemaakt met behulp van SOUNDS LIKE in plaats van de SOUNDEX() functie. Zoals dit:

SELECT ArtistName FROM Artists
WHERE ArtistName SOUNDS LIKE 'Ay See Dee Ci';

Resultaat:

+------------+
| ArtistName |
+------------+
| AC/DC      |
+------------+

  1. PL/SQL ORA-01422:exact ophalen levert meer op dan het gevraagde aantal rijen

  2. Schakel root-aanmelding uit in phpMyAdmin

  3. SQL Server XML-query met meerdere naamruimten

  4. Wat zijn de bekende manieren om een ​​boomstructuur op te slaan in een relationele DB?