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
[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA par cyril
Le deuxième keynote du mix fut très riche en contenu. Internet Explorer 9 Juste un après le lancement de Internet Explorer 8, Microsoft a dévoilé les nouveautés de Internet Explorer 9. Désormais, IE supportera HTML5, SVG et CSS3. L'élément ...
Cliquez pour lire la suite de l'article par cyril CERTIFICATIONS BETA .NET 4CERTIFICATIONS BETA .NET 4 par KooKiz
Les inscriptions pour les certifications beta .NET 4 ont commencé. L'inscription est offerte pour les examens suivants : - 71-511, TS: Windows Applications Development with Microsoft .NET Framework 4 - 71-515, TS: Web Applications Development with...
Cliquez pour lire la suite de l'article par KooKiz [MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2[MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2 par redo
J'imagine que la plupart d'entre vous connaissent bien et utilisent le service de traduction de Google, mais connaissez-vous celui de Microsoft . Microsoft Translator ? Effectivement, Microsoft nous annoncé le lancement version 2 de la Technologie Preview...
Cliquez pour lire la suite de l'article par redo LANCEMENT EN PREVIEW DE CYCLONE LORS DES TECHDAYS 2010!LANCEMENT EN PREVIEW DE CYCLONE LORS DES TECHDAYS 2010! par MPOWARE
Toutes les vidéos de ce lancement sont en ligne!
Partie I - Intro
http://www.youtube.com/watch?v=LkQzTQ8T6CA
Partie II - Démo 1
http://www.youtube.com/watch?v=drAhYQ7lqvo
Partie III - Démo 2
http://www.youtube.com/watch?v=c8KM_1Gqybc...
Cliquez pour lire la suite de l'article par MPOWARE
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|