Transact- SQL do Microsoft SQL tem a capacidade de tirar caracteres alfa , mas deixar caracteres numéricos em uma string , ele só exige a criação de uma função definida pelo usuário. Você pode querer fazer isso em casos em que há um campo numérico no banco de dados e você deseja proteger a integridade do seu instrução de inserção limpando os dados antes de tentar a inserção. Na maioria dos casos , toda a instrução de inserção falhará se houver um caractere alfabético em um campo numérico . Instruções
um
Em Microsoft SQL , criar uma função definida pelo usuário, como :
CRIAR dbo.UDF_NumericOnlyChars FUNÇÃO
(
@ cadeia VARCHAR (8000)
)
RETURNS VARCHAR ( 8000)
AS
BEGIN
DECLARE @ IncorrectCharLoc SMALLINT
SET @ IncorrectCharLoc = PATINDEX ( '% [^ 0-9] % ', @ string)
ENQUANTO @ IncorrectCharLoc > 0
BEGIN
SET @ NumericString = STUFF ( @ NumericString , @ IncorrectCharLoc , 1, '')
SET @ IncorrectCharLoc = PATINDEX ( '% [^ 0-9] % ', @ NumericString )
END
Se ( @ NumericString ='' )
SET @ NumericString = '0 ' - Isto irá assegurar que uma seqüência de números é devolvido
DEVOLVER @ NumericString
End of
GO
isto é baseado fora da função definida pelo usuário criado por Pinal Dave
2
Use a função assim: .
Selecione [dbo] UDF_NumericOnlyChars ( ' sadDs132 # dds @ 19 ')
que retornará : .
13219
3
Use a função em uma coluna da tabela para retornar apenas os dígitos numéricos na seqüência :
Selecione nome, sobrenome , telefone, UDF_NumericOnlyChars (Telefone) como " NumberOnly 'de tblPeople
que retornará :
Nome Sobrenome Telefone NumberOnly
-------------------------------------- -----------------------------
John Doe (888) 555-1212 8885 551212