Confesso este codigo não é meu achei na net em http://sqlbrasil.blogspot.com.br/2011/08/funcao-para-retornar-somente-numeros-em.html
Mas achei o codigo tão interessante que estou replicando
Vai la :
CREATE FUNCTION [dbo].[TiraLetras]
(
@Resultado VARCHAR(8000)
)
RETURNS VARCHAR(8000)
AS
BEGIN
DECLARE @CharInvalido SMALLINT
SET @CharInvalido = PATINDEX('%[^0-9]%', @Resultado)
WHILE @CharInvalido > 0
BEGIN
SET @Resultado = STUFF(@Resultado, @CharInvalido, 1, '')
SET @CharInvalido = PATINDEX('%[^0-9]%', @Resultado)
END
SET @Resultado = @Resultado
RETURN @Resultado
END
Para testar :
Select dbo.TiraLetras('AB12CD34%¨&*(56')
Resultado: '123456'
Select dbo.TiraLetras('95.012-500') 'CEP'
Resultado: '95012500'