Bande de caractères non numériques à partir d'une chaîne
Je suis en train de faire une conversion de données du projet et de la nécessité de dépouiller tous les caractères alphabétiques à partir d'une chaîne. Malheureusement je ne peux pas créer ou utiliser une fonction que nous n'avons pas la source de la machine faisant les méthodes que j'ai trouvé à partir de la recherche de précédents posts inutilisable.
Quelle serait la meilleure façon de le faire dans une instruction select? La vitesse n'est pas trop un problème, car il va seulement être en cours d'exécution de plus de 30 000 enregistrements ou alors, une fois hors de déclaration.
OriginalL'auteur Michael A | 2012-09-20
Vous devez vous connecter pour publier un commentaire.
RichardTheKiwi du script dans une fonction pour une utilisation en sélectionne sans croix appliquer,
également ajouté dot parce que dans mon cas je l'utilise pour les doubles et les valeurs de la monnaie au sein d'un champ de type varchar
Grâce RichardTheKiwi +1
OriginalL'auteur Pierre
Vous pouvez le faire en une seule instruction. Vous n'êtes pas vraiment la création d'une déclaration auprès de 200+ Remplace êtes-vous?!
De travail SQL Violon montrant cette requête avec les données de l'échantillon
Répliqué ci-dessous pour la postérité:
Résultats
Vous avez raison. Je viens d'avoir ce modèle que j'ai utilisé avant pour le nettoyage de certains groupes de caractères (différents clause where), j'ai donc pensé que je pourrais le réutiliser.
+1 pour être aussi Génial! Vous avez le meilleur script de loin, testé plus de 20 scripts en maintenant Tous les autres ont soit pas pris en charge par SQL 2005 normes, ou Super lent.
OriginalL'auteur RichardTheKiwi
CTE vient de l'AIDE ici.
de sortie:
OriginalL'auteur ClearLogic
Bien si vraiment vous ne pouvez pas utiliser une fonction, je suppose que vous pourriez faire quelque chose comme ceci:
Évidemment, il serait beaucoup plus laid que ça, puisque je ne les ai manipulé les trois premières lettres, mais il doit donner l'idée.
Un T-SQL fonction ne serait pas tout ce que beaucoup plus joli, semble tout simplement mieux dans la requête. Maintenant, CLR, d'autre part, de vous laisser faire ce genre de chose beaucoup plus propre avec la RegEx.
Je suis entièrement d'accord temps de projet sensible bien 🙂
Je pense que plus concis TSQL solution est encore possible... Si exotique de caractères dans la chaîne ou de doute, cette réponse devrait inclure
REPLACE(..,Char(244),'')
etcOriginalL'auteur Aaron Bertrand