de Microsoft SQL Transact -SQL tiene la capacidad para sacar los caracteres alfabéticos , pero dejan caracteres numéricos en una cadena , sino que sólo requiere la creación de una función definida por el usuario . Es posible que desee hacer esto en los casos en que hay un campo numérico en la base de datos y desea proteger la integridad de su instrucción de inserción mediante la limpieza de los datos antes de realizar la inserción. En la mayoría de los casos , toda la instrucción de inserción se producirá un error si hay un carácter alfabético en un campo numérico . Instrucciones
1
En Microsoft SQL , crear una función definida por el usuario como :
CREAR dbo.UDF_NumericOnlyChars FUNCIÓN
(
@ VARCHAR (8000 )
)
RETURNS VARCHAR (8000 )
AS
COMENZAR
DECLARE @ IncorrectCharLoc SMALLINT
< p > SET @ IncorrectCharLoc = PATINDEX ( '% [ ^ 0-9 ]% ', @ cadena)
MIENTRAS @ IncorrectCharLoc > 0
COMENZAR
SET @ NumericString = COSAS (@ NumericString , @ IncorrectCharLoc , 1 ,'')
SET @ IncorrectCharLoc = PATINDEX ( '% [ ^ 0-9 ]% ', @ NumericString )
End of < p> Si (@ NumericString ='' )
SET @ NumericString = '0 '- Esto asegurará que una cadena de números se devuelve
RETURN @ NumericString
End of
GO
esto se basa en la función definida por el usuario creado por Pinal David
2
Utilice la función de la siguiente manera: .
< p . > Seleccione [ dbo ] UDF_NumericOnlyChars ( ' sadDs132 # dds @ 19 ' )
que devolverá :
13219
3
Utilice la función de una columna de tabla que sólo devuelve los dígitos numéricos de la cadena:
Seleccione Nombre, Apellido , Teléfono , UDF_NumericOnlyChars ( Phone) como " NumberOnly " de tblPeople
que devolverá :
< p> Nombre Apellido Teléfono NumberOnly
-------------------------------------- -----------------------------
John Doe (888) 555-1212 8885 551212