Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SQL SERVER 2005 : FONCTION DE SUPPRESSION DES ACCENTS DANS UNE CHAÎNE DE CARACTÈRES


Information sur la source

Catégorie :Base de données Source .NET ( DotNet ) Classé sous : sqlserver, accent, unicode, c, sqlclr Niveau : Initié Date de création : 08/01/2007 Date de mise à jour : 08/01/2007 17:26:23 Vu : 10 907

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note


Description

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

  • 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()));
  • }
  • };
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
 

Historique

08 janvier 2007 17:26:23 :
X

Commentaires et avis

signaler à un administrateur
Commentaire de Bidou le 09/01/2007 11:33:07 administrateur CS

Un snippet sur codyx aurait presque suffit non? ;-)

signaler à un administrateur
Commentaire de ebaloo le 25/05/2009 08:41:44 10/10

Tres bien.

Merci

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

SqlServer [ par dadge ] Je n'arrive pas à me connecter à des servers sous sql server 2000 alors que cela marche sous sql server 7.0 pourtant je remplis les mêmes champs dans XML et accent ... [ par Thanos_the_yopper ] voilà mon souci : je dois écrire un fichier XML. Or, dans le fichier créé, tous les accents ont été sucrés....je l'encode en UTF8 ... comment qu'il fa Encoding en unicode [ par bigflo ] Salut,Alors j'ai chercher sur le site mais j'ai pas trouver ce qu'il me fallait...C'est peut etre tout bete mais bon je patoge allegrement :)Mon petit petit problème d'accent :/ [ par RiCoOoO ] Je récupère les infos de l'exe tracert de windows et je l'affiche dans un label. Cependant les "é" sont remplacés par des "," (pareil pour les autres [C#] J'vais passer Unicode par la fenetre [ par scoubidou944 ] COMMENT = "Gestion des bureaux virtuels, affichage sur plusieurs écrans..."un texte aussi con rentre dans la table ASCII sans pb, pourtant visual stud webrequest unicode en ascii [ par ultima_93 ] Bonjour,Je vous explique mon probleme, j'envoi une url grace a webrequest , à un service qui est en c++.lorsque j'envoi mon url , ell peut comporter Lecture d'un fichier avec accent non reconnu [ par Cameleon69 ] Bonjourje lis un fichier avec la méthode suivante :string helpFile = Application.StartupPath + @"\aide.hlp";StreamReader sr = File.OpenText(helpFile); Lecture fichier plat, Accent [ par Diamondduff ] Je lis ligne à ligne un fichier plat....Les accents n'apparaissent pas, je suis blaséIl y a un jeu de caractère à passer? ou quelque chose à faire? insert sqlserver [ par amirirn1 ] bonjour,je veux entrer des donn&#233;e dans la base de donn&#233;mais qd je fais l insertion j ai l erreur&nbsp; ExecuteNonQuery:Connection property h Unicode et SQL Server [ par yoannd ] Bonjour &#224; tous, Je cherche &#224; faire un petit truc, l&#224;, mais ca marche pas des masses. J'ai une base de donnes contenant des phon&#233;t


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,671 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.