SOUNDEX() în MySQL

Returnează un cod fonetic al unui cuvânt, ca să găsești nume care se pronunță asemănător.

Sintaxă
SOUNDEX(sir)
expr1 SOUNDS LIKE expr2

Ce face SOUNDEX()

SOUNDEX() transformă un cuvânt într-un cod format dintr-o literă și cifre, după cum sună în engleză. Cuvintele cu pronunție asemănătoare primesc același cod.

expr1 SOUNDS LIKE expr2 este prescurtarea pentru SOUNDEX(expr1) = SOUNDEX(expr2). Algoritmul este gândit pentru engleză, deci la nume românești rezultatele sunt doar aproximative.

Parametri

Parametru Descriere
sir Cuvântul pentru care se calculează codul.

Ce returnează

Codul fonetic (cel puțin 4 caractere).

Exemple

Exemplele de pe această pagină pornesc de la datele de mai jos. Rulează mai întâi acest cod, apoi exemplul.

CREATE TABLE clienti (
  id INT PRIMARY KEY,
  nume VARCHAR(50),
  oras VARCHAR(30),
  email VARCHAR(100),
  telefon VARCHAR(20)
);

INSERT INTO clienti VALUES
  (1, 'Ana Pop', 'Iași', 'ana.pop@exemplu.ro', '0722-123-456'),
  (2, 'bogdan ionescu', 'Cluj-Napoca', 'bogdan@firma.ro', '0744 555 101'),
  (3, 'Cristina Marin', 'Brașov', 'cristina@exemplu.ro', '0733.222.909'),
  (4, 'Dan Stoica', 'Timișoara', NULL, '0755123123');

Exemplul 1: Nume scrise diferit, cu același cod

SELECT SOUNDEX('Popescu') AS a,
       SOUNDEX('Popesku') AS b,
       'Popescu' SOUNDS LIKE 'Popesku' AS suna_la_fel;

Rezultat

+------+------+-------------+
| a    | b    | suna_la_fel |
+------+------+-------------+
| P200 | P200 |           1 |
+------+------+-------------+

Exemplul 2: Căutare tolerantă la greșeli de scriere

SELECT nume
FROM clienti
WHERE SUBSTRING_INDEX(nume, ' ', -1) SOUNDS LIKE 'Marinn';

Rezultat

+----------------+
| nume           |
+----------------+
| Cristina Marin |
+----------------+

Greșeli frecvente

  • Te bazezi pe SOUNDEX() pentru texte în română. Algoritmul ignoră vocalele și are reguli pentru engleză, deci apar și potriviri false. Folosește-l doar ca sugestie.

Comenzi înrudite

  • LIKE: Caută texte după un model: începe cu, se termină cu, conține.
  • REGEXP / RLIKE: Verifică dacă un text se potrivește cu o expresie regulată; mai puternic decât LIKE.
  • STRCMP(): Compară două texte și returnează -1, 0 sau 1, după ordinea lor alfabetică.