Sql server 2005 : fonction de suppression des accents dans une chaîne de caractères

Soyez le premier à donner votre avis sur cette source.

Snippet vu 18 328 fois - Téléchargée 25 fois

Contenu du snippet

Cette fonction écrite en code .net qui s'intègre à SQL Server 2005 via la couche SQLCLR permet de supprimer tout ce qui est diacritiques (dont font partie les accents, les cédilles, etc.)
La méthode de base a été tirée du blog de Michael Kaplan de chez Microsoft : http://blogs.msdn.com/michkap/
Pour utiliser ce code il vous faudra dans Visual Studio 2005 dans lequel vous aurez à créer un projet "SQL Server Projet", dans "Base de données" / C#

Source / Exemple :


using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
using System.Globalization;
using System.Text;

public partial class UserDefinedFunctions
{
    [Microsoft.SqlServer.Server.SqlFunction]
    public static SqlString RemoveDiacritics(SqlString stArg)
    {

        string stFormD = stArg.ToString().Normalize(NormalizationForm.FormD);
        StringBuilder sb = new StringBuilder();

        for (int ich = 0; ich < stFormD.Length; ich++)
        {
            UnicodeCategory uc = CharUnicodeInfo.GetUnicodeCategory(stFormD[ich]);
            if (uc != UnicodeCategory.NonSpacingMark)
            {
                sb.Append(stFormD[ich]);
            }
        }

        return (new SqlString(sb.ToString()));

    }
};

Conclusion :


Pour utiliser cette fonction, faites un deploiement depuis Visual Studio 2005.

Pour la tester avec SQL Server :
select dbo.RemoveDiacritics('Téèààéààé*$ùùeéèçàççàstçàù')
-- Ajoutez bien le nom du schéma devant la fonction

Qui renverra :
Teeaaeaae*$uueeecaccastcau

A voir également

Ajouter un commentaire

Commentaires

dymsbess
Messages postés
56
Date d'inscription
mercredi 29 septembre 2004
Statut
Membre
Dernière intervention
4 janvier 2010
1 -
Je t'invite à tester la seconde procédure et à comparer les résultats avec la première, ils sont rigoureusement identiques.
cs_skweeky
Messages postés
259
Date d'inscription
mercredi 3 mai 2006
Statut
Modérateur
Dernière intervention
11 janvier 2010
2 -
Elle n'est pas simplifiéé, il ne fait pas la même chose... Transformer une chaîne en ASCII ne revient pas à la même chose de débarasser une chaîne Unicode de ses caractères de type diacritiques !!!
dymsbess
Messages postés
56
Date d'inscription
mercredi 29 septembre 2004
Statut
Membre
Dernière intervention
4 janvier 2010
1 -
Voici une fonction simplifiée, avec un Tutorial pour créer une CLR depuis Visual Studio 2010 :
http://www.xoowiki.com/Article/Csharp/remplacer-les-accents-dans-une-chaine-373.aspx
ebaloo
Messages postés
5
Date d'inscription
dimanche 23 février 2003
Statut
Membre
Dernière intervention
25 mai 2009
-
Tres bien.

Merci
cs_Bidou
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
43 -
Un snippet sur codyx aurait presque suffit non? ;-)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.