Una delle tante funzioni di stringa MySQL è SOUNDEX()
funzione. Questa funzione restituisce una stringa Soundex da una determinata stringa. Se due parole suonano allo stesso modo, dovrebbero avere la stessa stringa Soundex. Se due parole suonano simili, ma non esattamente uguali, la loro stringa Soundex potrebbe sembrare simile ma non esattamente la stessa.
Questo articolo contiene una serie di esempi Soundex per dimostrare come il SOUNDEX()
la funzione funziona in MySQL.
Sintassi
Per prima cosa, diamo un'occhiata alla sintassi:
SOUNDEX(str)
Dove str
è la stringa a cui si richiede la stringa Soundex.
Esempio
Ecco un esempio di recupero della stringa Soundex da una stringa:
SELECT SOUNDEX('Sure');
Risultato:
+-----------------+ | SOUNDEX('Sure') | +-----------------+ | S600 | +-----------------+
Quindi, in questo caso, la parola Sure
ha una stringa Soundex di S600
.
Esempio – Corrispondenza esatta
Ecco un esempio di dove due parole suonano allo stesso modo (o molto simili) e quindi condividono la stessa stringa Soundex:
SELECT SOUNDEX('Sure') AS Sure, SOUNDEX('Shore') AS Shore;
Risultato:
+------+-------+ | Sure | Shore | +------+-------+ | S600 | S600 | +------+-------+
Ecco alcuni esempi di corrispondenza più esatti:
SELECT SOUNDEX('Dam') AS Dam, SOUNDEX('Damn') AS Damn, SOUNDEX('Too') AS Too, SOUNDEX('Two') AS Two;
Risultato:
+------+------+------+------+ | Dam | Damn | Too | Two | +------+------+------+------+ | D500 | D500 | T000 | T000 | +------+------+------+------+
Esempio:non corrispondenza
Ecco un esempio in cui due parole non suonano allo stesso modo e, quindi, hanno corde Soundex diverse:
SELECT SOUNDEX('Water') AS Water, SOUNDEX('Coffee') AS Coffee;
Risultato:
+-------+--------+ | Water | Coffee | +-------+--------+ | W360 | C100 | +-------+--------+
Come puoi vedere, la stringa Soundex è completamente diversa per queste due parole.
Esempio:ortografie diverse
Ecco un esempio di due parole che hanno un'ortografia diversa (a seconda del paese di provenienza):
SELECT SOUNDEX('Color') AS 'Color', SOUNDEX('Colour') AS 'Colour';
Risultato:
+-------+--------+ | Color | Colour | +-------+--------+ | C460 | C460 | +-------+--------+
Quindi possiamo vedere che tali parole condivideranno la stessa stringa Soundex (purché siano pronunciate allo stesso modo).
Esempio:stesso suono, soundex diverso
Ci sono casi in cui le parole suonano allo stesso modo, ma hanno corde Soundex diverse. Il motivo più comune è che iniziano con una lettera diversa, una delle quali è una lettera muta. Potresti aver notato dagli esempi precedenti che la stringa Soundex inizia con la prima lettera della stringa.
Pertanto, se hai due parole che si pronunciano esattamente allo stesso modo, ma iniziano con una lettera diversa, avranno una stringa Soundex diversa.
Ecco alcuni esempi:
SELECT SOUNDEX('Hole') AS 'Hole', SOUNDEX('Whole') AS 'Whole', SOUNDEX('Our') AS Our, SOUNDEX('Hour') AS Hour;
Risultato:
+------+-------+------+------+ | Hole | Whole | Our | Hour | +------+-------+------+------+ | H400 | W400 | O600 | H600 | +------+-------+------+------+
Le coppie in questo esempio hanno stringhe Soundex diverse solo perché la loro prima lettera è diversa.
Esempio:Soundex in una query di database
Ecco un esempio di utilizzo di SOUNDEX()
in una query di database. In questo caso, stiamo cercando tutti i record che suonano come "Ay See Dee Ci":
SELECT ArtistName FROM Artists WHERE SOUNDEX(ArtistName) = SOUNDEX('Ay See Dee Ci');
Risultato:
+------------+ | ArtistName | +------------+ | AC/DC | +------------+
Quindi AC/DC
apparentemente ha lo stesso codice Soundex di Ay See Dee Ci
(almeno quando si utilizza MySQL) Per sicurezza, ecco i codici Soundex per entrambe le stringhe:
SELECT SOUNDEX('AC/DC') AS 'AC/DC', SOUNDEX('Ay See Dee Ci') AS 'Ay See Dee Ci';
Risultato:
+-------+---------------+ | AC/DC | Ay See Dee Ci | +-------+---------------+ | A232 | A232 | +-------+---------------+
Un'alternativa:SUONA COME
Potrebbe essere stata creata una query alternativa utilizzando SOUNDS LIKE
invece di SOUNDEX()
funzione. In questo modo:
SELECT ArtistName FROM Artists WHERE ArtistName SOUNDS LIKE 'Ay See Dee Ci';
Risultato:
+------------+ | ArtistName | +------------+ | AC/DC | +------------+