Nettoyage des chaînes de texte dans SQL Server en conservant les lettres et les chiffres dans SQL Server
Créer une fonction pour nettoyer les chaînes de texte de tous les caractères qui ne sont pas entre 0-9 ou AZ dans SQL Server
Aperçu
Notre base de données d'utilitaires est pleine de petites fonctions intéressantes.
Celui-ci est utilisé pour nettoyer les données avant de les mettre dans notre base de données, en supprimant tout le texte qui n'est pas entre '0' et 'Z', en boucle dans la chaîne de texte jusqu'à ce qu'aucun élément qui ne se trouve pas entre les valeurs ne puisse être trouvé .
La fonction de base consiste simplement à parcourir chaque caractère de la valeur d'entrée et à supprimer ceux qui ne sont pas compris dans la plage d'index de motif.
Si vous n'aviez besoin que de chiffres, [^ 0-Z] devient [^ 0-9].
Alternativement, pour uniquement le texte, c'est [^ aZ].
SQL
CREATE Function [dbo].[CleanToText](@Data VARCHAR(100))Returns VARCHAR(100)AS BEGIN DECLARE @Letter INT SET @Letter =PATINDEX('%[^0-Z]%',@Data) BEGIN WHILE @Letter>0 BEGIN SET @Data =STUFF(@Data,@Letter,1,'') SET @Letter =PATINDEX('%[^0-Z]%',@Data) END END RETURN @DataENDGOSELECT dbo.CleanToText('info@claytabase.co.uk')
Aperçu
Renvoie la chaîne suivante 'infoclaytabasecouk', en supprimant "@" et ".".