SQL Server: Comment supprimer la ponctuation d'un champ?
Un connais un bon moyen d'éliminer les signes de ponctuation à partir d'un champ dans SQL Server?
Je pense
UPDATE tblMyTable SET FieldName = REPLACE(REPLACE(REPLACE(FieldName,',',''),'.',''),'''' ,'')
mais il semble un peu fastidieux quand j'ai l'intention de la suppression d'un grand nombre de personnages différents, par exemple: !@#$%^&*()<>:"
Merci d'avance
source d'informationauteur Ev. | 2009-11-30
Vous devez vous connecter pour publier un commentaire.
Idéalement, vous voulez faire cela dans une langue de l'application, tels que C# + LINQ comme mentionné ci-dessus.
Si vous voulais le faire uniquement en T-SQL cependant, une façon de rendre les choses plus propre serait de d'abord créer une table qui détenait tous les signes de ponctuation que vous vouliez supprimé.
Ensuite, vous pouvez créer une fonction en SQL pour supprimer tous les symboles de ponctuation à partir d'une chaîne d'entrée.
Alors vous pouvez simplement appeler la fonction dans votre instruction de mise à JOUR
Je voulais éviter de créer un tableau et je voulais enlever tout sauf des lettres et des chiffres.
Je propose 2 solutions
Solution 1: Faire un bruit de table et de remplacer les bruits avec des espaces vides
par exemple
Solution 2: Avec une table de nombre
De sortie(Deux cas)
Données
Remarque - je viens de mettre un peu de bruits. Vous devrez peut-être mettre les bruits que u besoin.
Espère que cette aide
Vous pouvez utiliser des expressions régulières dans SQL Server - voici un article basé sur SQL 2005:
http://msdn.microsoft.com/en-us/magazine/cc163473.aspx
J'avais de l'envelopper dans un simple scalaire de l'UDF, donc toutes les chaînes de nettoyage en un seul endroit, si c'est à nouveau nécessaire.
Ensuite, vous pouvez l'utiliser sur d'INSÉRER trop...
Si c'est un one-off chose, je voudrais utiliser un C# + LINQ extrait de code dans LINQPad de faire le travail avec des expressions régulières.
Il est rapide et facile et vous n'avez pas à aller à travers le processus de configuration d'un CLR procédure stockée et puis de nettoyer après vous.
Ne pouvez-vous pas utiliser PATINDEX pour inclure uniquement les CHIFFRES et les LETTRES, au lieu d'essayer de deviner ce que la ponctuation peut-être dans le domaine? (Ne cherche pas à être désagréable, si j'avais le code prêt, j'en ferais part...mais c'est ce que je suis à la recherche d').
Semble que vous avez besoin de créer une fonction personnalisée afin d'éviter une liste gigantesque de remplacer les fonctions dans les requêtes - voici un bon exemple:
http://www.codeproject.com/KB/database/SQLPhoneNumbersPart_2.aspx?display=Print
J'ai pris Ken MC de la solution et en a fait une fonction qui peut remplacer tous les signes de ponctuation avec une chaîne de caractères:
De sortie: