Limpieza de cadenas de texto en SQL Server manteniendo letras y números en SQL Server
Cree una función para limpiar cadenas de texto de todos los caracteres que no estén entre 0-9 o AZ en SQL Server
Visión general
Nuestra base de datos de utilidades está llena de pequeñas funciones interesantes.
Este se usa para limpiar los datos antes de ponerlos en nuestra base de datos, eliminando todo el texto que no está entre '0' y 'Z', recorriendo la cadena de texto hasta que no se puedan encontrar elementos que no estén entre los valores .
La función básica es simplemente recorrer cada carácter del valor de entrada y eliminar cualquiera que no esté dentro del rango del índice de patrón.
Si solo necesita números, entonces [^ 0-Z] se convierte en [^ 0-9].
Alternativamente, solo para texto es [^ 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')
Visión general
Devuelve la siguiente cadena 'infoclaytabasecouk', eliminando "@" y ".".