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ă.