
Le bloc fonctionnel SOUNDEX calcule la similarité phonétique d'une chaîne de caractères.
Les valeurs Soundex ont la propriété que les mots prononcés de manière similaire produisent la même valeur Soundex. Cela peut être utilisé pour rechercher dans des bases de données lorsque vous connaissez la prononciation mais pas l'orthographe exacte. La fonction Soundex retourne une chaîne de caractères de quatre caractères, commençant par une lettre.
L'entrée définit la chaîne de caractères à calculer.
Retourne une chaîne de caractères avec le code Soundex.
Chaque code Soundex est composé d'une lettre suivie de trois chiffres, par exemple A532 pour Antcas. Si le mot à coder a suffisamment de lettres pour générer plus de chiffres, on s'arrête après le troisième chiffre. Si le mot a trop peu de lettres, les derniers chiffres sont complétés par des zéros. Le nom asiatique Lee est donc codé comme L000.
| Chiffre | Lettres Représentées |
|---|---|
| 1 | B, F, P, V |
| 2 | C, G, J, K, Q, S, X, Z |
| 3 | D, T |
| 4 | L |
| 5 | M, N |
| 6 | R |
Les voyelles A, E, I, O et U et les consonnes H, W et Y sont à ignorer sauf pour la première lettre. En outre, pour la langue allemande, il peut être défini que les lettres accentuées Ä, Ö et Ü sont à ignorer, le "s charpentier" ß est codé comme le simple S.
Si plusieurs lettres consécutives dans la chaîne de caractères originale ont le même code Soundex, celui-ci n'apparaît qu'une seule fois dans le résultat, à partir de abfx devient donc environ A120 (a reste, car première lettre, b et f donnent tous deux le même code 1, x donne 2, à la fin un zéro est ajouté pour obtenir quatre caractères).
Lors de l'application pratique du procédé Soundex, deux points sont principalement critiqués : d'une part, il est très orienté vers la langue anglaise, d'autre part, il n'offre qu'une analyse très grossière.
Néanmoins, il convient de noter que l'algorithme représenté est probablement le plus fréquemment utilisé pour la recherche phonétique. Cela a certainement contribué au fait qu'une commande standard PL/SQL correspondante a été implémentée très tôt pour la base de données Oracle.