sql >> Base de Datos >  >> RDS >> Mysql

Ejemplos de MySQL SOUNDEX()

Una de las muchas funciones de cadena de MySQL es SOUNDEX() función. Esta función devuelve una cadena Soundex de una cadena dada. Si dos palabras suenan igual, deben tener la misma cadena Soundex. Si dos palabras suenan similares, pero no exactamente iguales, su cadena Soundex puede parecer similar pero no exactamente igual.

Este artículo contiene varios ejemplos de Soundex para demostrar cómo SOUNDEX() funciona en MySQL.

Sintaxis

Primero, veamos la sintaxis:

SOUNDEX(str)

Donde str es la cadena a la que necesita la cadena Soundex.

Ejemplo

Aquí hay un ejemplo de cómo recuperar la cadena Soundex de una cadena:

SELECT SOUNDEX('Sure');

Resultado:

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

Entonces, en este caso, la palabra Sure tiene una cadena Soundex de S600 .

Ejemplo:coincidencia exacta

Aquí hay un ejemplo de dos palabras que suenan igual (o muy similares) y, por lo tanto, comparten la misma cadena Soundex:

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

Resultado:

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

Estos son algunos ejemplos de coincidencias más exactas:

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

Resultado:

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

Ejemplo:no coincidencia

Aquí hay un ejemplo de dos palabras que no suenan igual y, por lo tanto, tienen diferentes cadenas Soundex:

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

Resultado:

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

Como puede ver, la cadena Soundex es completamente diferente para estas dos palabras.

Ejemplo:ortografía diferente

Aquí hay un ejemplo de dos palabras que tienen diferentes ortografías (según el país de donde seas):

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

Resultado:

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

Entonces podemos ver que tales palabras compartirán la misma cadena Soundex (siempre y cuando se pronuncien de la misma manera).

Ejemplo:el mismo sonido, diferente Soundex

Hay casos en que las palabras suenan igual, pero tienen diferentes cadenas Soundex. La razón más común de esto es que comienzan con una letra diferente, una de las cuales es una letra muda. Es posible que haya notado en los ejemplos anteriores que la cadena Soundex comienza con la primera letra de la cadena.

Por lo tanto, si tiene dos palabras que se pronuncian exactamente igual, pero comienzan con una letra diferente, tendrán una cadena Soundex diferente.

Estos son algunos ejemplos:

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

Resultado:

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

Los pares de este ejemplo tienen diferentes cadenas Soundex únicamente porque su primera letra es diferente.

Ejemplo:Soundex en una consulta de base de datos

Aquí hay un ejemplo del uso de SOUNDEX() en una consulta de base de datos. En este caso, buscamos cualquier registro que suene como "Ay See Dee Ci":

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

Resultado:

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

Entonces AC/DC aparentemente tiene el mismo código Soundex que Ay See Dee Ci (al menos cuando se usa MySQL) Solo para estar seguro, aquí están los códigos Soundex para ambas cadenas:

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

Resultado:

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

Una alternativa:SUENA COMO

Se podría haber construido una consulta alternativa utilizando SOUNDS LIKE en lugar de SOUNDEX() función. Así:

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

Resultado:

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