Accueil > > > SOUNDEX ELARGIE
SOUNDEX ELARGIE
Information sur la source
Description
La fonction soundex de SQL ne retourne qu'un son sur 5 caractères. Pour affiner les comparaison de sonorité de phrase, la fonction big_soundex(@chaine nvarchar, @longueur int) retourne une chaine sonore d'une longueur défini par le parametre @longueur qui est cependant limité a 10 caractères ici, mais a vous de modifier le code pour augmenter (attention au delai d'execution dans ce dernier cas)
Source
- CREATE FUNCTION big_soundex
- (@WordString nvarchar(50), @SoundExLen int)
- RETURNS nvarchar(10)
- AS
- begin
- declare @Counter int
- declare @CurrChar char(1)
- declare @retVal nvarchar(10)
-
- // test de la longueur demandé
- If @SoundExLen > 10
- begin
- set @SoundExLen = 10
- end
- if @SoundExLen < 4
- begin
- set @SoundExLen = 4
- end
-
- set @SoundExLen = @SoundExLen - 1
-
- // soundex ne travail qu'avec des lettres capitale
- set @WordString = upper(@WordString)
-
- SET @Counter = 1
- //on parcours la chaine et on remplace tout ce qui n'est pas une lettre par un blanc
- WHILE @Counter <= len(@WordString)
- BEGIN
- If ASCII(SUBSTRING(@WordString, @Counter, 1)) < 65 Or ASCII(SUBSTRING(@WordString, @Counter, 1)) > 90
- BEGIN
- set @WordString = Left(@WordString, @Counter - 1) + ' ' + SUBSTRING(@WordString, @Counter + 1, len(@WordString))
- End
- set @counter = @counter + 1
- END
- //suppression des eventuels espace en debut et en fin de chaine
- set @WordString = lTrim(rtrim(@WordString))
-
- //création du 'son'
- If Len(lTrim(rtrim(@WordString))) = 0
- begin
- set @retVal = ''
- end
- Else
- begin
- set @retVal = @WordString
-
- set @retVal = Replace(@retVal, 'A', '0')
- set @retVal = Replace(@retVal, 'E', '0')
- set @retVal = Replace(@retVal, 'I', '0')
- set @retVal = Replace(@retVal, 'O', '0')
- set @retVal = Replace(@retVal, 'U', '0')
- set @retVal = Replace(@retVal, 'Y', '0')
- set @retVal = Replace(@retVal, 'H', '0')
- set @retVal = Replace(@retVal, 'W', '0')
- set @retVal = Replace(@retVal, 'B', '1')
- set @retVal = Replace(@retVal, 'P', '1')
- set @retVal = Replace(@retVal, 'F', '1')
- set @retVal = Replace(@retVal, 'V', '1')
- set @retVal = Replace(@retVal, 'C', '2')
- set @retVal = Replace(@retVal, 'S', '2')
- set @retVal = Replace(@retVal, 'G', '2')
- set @retVal = Replace(@retVal, 'J', '2')
- set @retVal = Replace(@retVal, 'K', '2')
- set @retVal = Replace(@retVal, 'Q', '2')
- set @retVal = Replace(@retVal, 'X', '2')
- set @retVal = Replace(@retVal, 'Z', '2')
- set @retVal = Replace(@retVal, 'D', '3')
- set @retVal = Replace(@retVal, 'T', '3')
- set @retVal = Replace(@retVal, 'L', '4')
- set @retVal = Replace(@retVal, 'M', '5')
- set @retVal = Replace(@retVal, 'N', '5')
- set @retVal = Replace(@retVal, 'R', '6')
-
- set @CurrChar = Left(@retVal, 1)
- set @counter = 2
- //on retire les son successif iddentique
- while @counter <= len(@retVal)
- begin
- If substring(@retVal, @Counter, 1) = @CurrChar
- begin
- set @retVal = Left(@retVal, @Counter - 1) + substring(@retVal, @Counter + 1, len(@retVal))
- end
- Else
- begin
- set @CurrChar = SUBSTRING(@retVal, @Counter, 1)
- End
- set @counter = @counter + 1
- end
-
- //suppression des blanc
- set @retVal = Replace(@retVal, ' ', '')
-
- //suppression des 0
- set @retVal = substring(@retVal, 2, len(@retVal))
- set @retVal = Replace(@retVal, '0', '')
-
- // on ajoute des 0 si le 'son' est trop court pour etre sur d'avoir le nombre de caractère voulue
- set @retVal = @retVal + REPLICATE('0', @SoundExLen)
- set @retVal = Left(@WordString, 1) + Left(@retVal, @SoundExLen)
-
- End
- // retour du son
- return @retVal
- end
CREATE FUNCTION big_soundex
(@WordString nvarchar(50), @SoundExLen int)
RETURNS nvarchar(10)
AS
begin
declare @Counter int
declare @CurrChar char(1)
declare @retVal nvarchar(10)
// test de la longueur demandé
If @SoundExLen > 10
begin
set @SoundExLen = 10
end
if @SoundExLen < 4
begin
set @SoundExLen = 4
end
set @SoundExLen = @SoundExLen - 1
// soundex ne travail qu'avec des lettres capitale
set @WordString = upper(@WordString)
SET @Counter = 1
//on parcours la chaine et on remplace tout ce qui n'est pas une lettre par un blanc
WHILE @Counter <= len(@WordString)
BEGIN
If ASCII(SUBSTRING(@WordString, @Counter, 1)) < 65 Or ASCII(SUBSTRING(@WordString, @Counter, 1)) > 90
BEGIN
set @WordString = Left(@WordString, @Counter - 1) + ' ' + SUBSTRING(@WordString, @Counter + 1, len(@WordString))
End
set @counter = @counter + 1
END
//suppression des eventuels espace en debut et en fin de chaine
set @WordString = lTrim(rtrim(@WordString))
//création du 'son'
If Len(lTrim(rtrim(@WordString))) = 0
begin
set @retVal = ''
end
Else
begin
set @retVal = @WordString
set @retVal = Replace(@retVal, 'A', '0')
set @retVal = Replace(@retVal, 'E', '0')
set @retVal = Replace(@retVal, 'I', '0')
set @retVal = Replace(@retVal, 'O', '0')
set @retVal = Replace(@retVal, 'U', '0')
set @retVal = Replace(@retVal, 'Y', '0')
set @retVal = Replace(@retVal, 'H', '0')
set @retVal = Replace(@retVal, 'W', '0')
set @retVal = Replace(@retVal, 'B', '1')
set @retVal = Replace(@retVal, 'P', '1')
set @retVal = Replace(@retVal, 'F', '1')
set @retVal = Replace(@retVal, 'V', '1')
set @retVal = Replace(@retVal, 'C', '2')
set @retVal = Replace(@retVal, 'S', '2')
set @retVal = Replace(@retVal, 'G', '2')
set @retVal = Replace(@retVal, 'J', '2')
set @retVal = Replace(@retVal, 'K', '2')
set @retVal = Replace(@retVal, 'Q', '2')
set @retVal = Replace(@retVal, 'X', '2')
set @retVal = Replace(@retVal, 'Z', '2')
set @retVal = Replace(@retVal, 'D', '3')
set @retVal = Replace(@retVal, 'T', '3')
set @retVal = Replace(@retVal, 'L', '4')
set @retVal = Replace(@retVal, 'M', '5')
set @retVal = Replace(@retVal, 'N', '5')
set @retVal = Replace(@retVal, 'R', '6')
set @CurrChar = Left(@retVal, 1)
set @counter = 2
//on retire les son successif iddentique
while @counter <= len(@retVal)
begin
If substring(@retVal, @Counter, 1) = @CurrChar
begin
set @retVal = Left(@retVal, @Counter - 1) + substring(@retVal, @Counter + 1, len(@retVal))
end
Else
begin
set @CurrChar = SUBSTRING(@retVal, @Counter, 1)
End
set @counter = @counter + 1
end
//suppression des blanc
set @retVal = Replace(@retVal, ' ', '')
//suppression des 0
set @retVal = substring(@retVal, 2, len(@retVal))
set @retVal = Replace(@retVal, '0', '')
// on ajoute des 0 si le 'son' est trop court pour etre sur d'avoir le nombre de caractère voulue
set @retVal = @retVal + REPLICATE('0', @SoundExLen)
set @retVal = Left(@WordString, 1) + Left(@retVal, @SoundExLen)
End
// retour du son
return @retVal
end
Conclusion
exemple : select mabase.dbo.big_soundex('soundex ne retourne pas un son assez précis', 10) retourne : S532500000
alors que : select soundex('soundex ne retourne pas un son assez précis') ne retourne que S532
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
SoundEx [ par juki_webmaster ]
Bonjour,Je voit quelques sources tout en tour de codes-sources et meme cs qui utilise cette 'methode de recherche' parler du SoundEx.Je souhaite savoi
Fonction Difference (soundex) SQL server [ par oluha ]
BonjourJ'ai besoin d'utiliser la fonction Difference (qui se base sur le soundex) mais je trouve qu'elle n'est pas assez précise du fait que le sounde
Recherche dans une table [ par Fildomen ]
sltquelle est la commande pour chercher un mot dans une table où la colonne "TXT" contient du texte???et classer les réponses par pertinence
Recherche Approximative [ par eowene ]
Bonjour à tous. J'aimerais savoir comment faire pour faire une recherche approximative sur un champ de ma base de données. Je m'explique.
pb avec les caractères génériques !!!! [ par GerardChezy ]
Bonjour.J'ai un pb dans ma requete (sur sqlserver 2000) avec le caractère générique _ (celui qui remplace 1 caractère).Lorsque je
indexation mysql [ par dibouched ]
bojour , j'ai une base de données mysql et je cherceh comment indexer des colonne pour une recherche fulltext ensuite mon probleme est que
quote et recherche de texte intégral [ par karn ]
Bonjour,J'ai crée une base qui supporte la recherche de texte integral sous sql server, les requetes de recherche marche bien sauf avec les mot c
Soundex, ou Ratcliff Obershelp Levenshtein algorytme [ par pluplu ]
Bonjour, quelqu'un a t'il déja implémenter la technique Soundex, ou Ratcliff Obershelp Levenshtein dans une stored procédure en SQL.Je
Moteur de recherche SQL 2000 [ par vindavid38 ]
ZanTarBonjour je souhaiterais savoir si sql 2000 a un moteur spécial pour le fonctionnement du partitionnement horizontal?? Est ce que
recherche mot clé [ par nick774 ]
Salut, On m'a redirigé sur votre site alors je tente ma chance... Soit: lechamp1 et lechamp2 les éléments du formulaire (page1.asp) c
|
Derniers Blogs
CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT)CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT) par FREMYCOMPANY
Bonjour à tous, Je viens de publier une proposition comprenant 5 pseudo-classes pour le CSS Working Group ayant trait à l'état de chargement d'un élément (ex: IMG,VIDEO,AUDIO,OBJECT pour l'HTML.). Si le c½ur vous en dit, vous pouvez retrouver cette p...
Cliquez pour lire la suite de l'article par FREMYCOMPANY MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ?MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ? par ROMELARD Fabrice
Formation initiale Durant la formation, le découpage classique est le suivant (je donnerai les équivalences Suisse lorsque je les connaîtrais) : Ecole primaire jusqu'au Collège : Formation générale permettant d'obtenir les méthodes...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice Y'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENTY'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENT par Aleks
Quand on a ce genre d'erreur sans log :
Et bas on a juste envie de choper le gas de Microsoft qu'a développé ça et lui foutre des baffes de Coboye ! ...
Cliquez pour lire la suite de l'article par Aleks [HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL[HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL par Pierrick CATRO-BROUILLET
Avec la sortie prochaine de la Beta Consumer Preview de Windows 8, j'avais envie de revenir sur une des fonctionnalités que j'attends le plus et que, en bon geek que je suis, j'utilise déjà : Hyper-V 3 ainsi son module PowerShell.
Il y a déjà pléthor...
Cliquez pour lire la suite de l'article par Pierrick CATRO-BROUILLET IIS7 - COMPRESSION GZIPIIS7 - COMPRESSION GZIP par cyril
La compression GZIP permet d'améliorer les performances de navigation en compressant ce qu'envoie le serveur à un client. Pour comprendre comment cela fonctionne, regardons ce qu'il se passe au niveau HTTP lorsqu'un client tente d'accéder à une ress...
Cliquez pour lire la suite de l'article par cyril
Logiciels
Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning Academy System (17.1.3.0)ACADEMY SYSTEM (17.1.3.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|