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

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

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.