Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

JORGE_CARDOSO

Funções para separar texto e numeros

Recommended Posts

-- Percebi que não existe muito deste tratamento direto em sql na maioria dos casos o pessoal trata na programação (c#,vb e etc...)

-- para ajudar aqueles que gostariam apenas de extrair já tratando posto esse script .

 

 

CREATE FUNCTION [DBO].[FX_NUMERO] ( @TEXTO VARCHAR(200) )   
RETURNS VARCHAR(200)  

AS
BEGIN
DECLARE @INICIAL INT,@FINAL INT,@VARLETRAS VARCHAR(80),@VARNUMEROS VARCHAR(80)

SET @INICIAL = 1
SET @FINAL = LEN(@TEXTO)
SET @VARLETRAS = ''
SET @VARNUMEROS = ''

WHILE   @INICIAL < @FINAL+1
BEGIN
SET  @VARNUMEROS = @VARNUMEROS + CASE WHEN SUBSTRING(@TEXTO,@INICIAL,1) IN ('1','2','3','4','5','6','7','8','9','0') THEN SUBSTRING(@TEXTO,@INICIAL,1) ELSE '' END
SET @INICIAL = @INICIAL + 1
END
RETURN @VARNUMEROS  
END

 

---------------------------------------------------------

go

---------------------------------------------------------

 

CREATE FUNCTION [DBO].[FX_ENDERECO] ( @TEXTO VARCHAR(200) )   
RETURNS VARCHAR(200)  
AS
BEGIN
DECLARE @INICIAL INT,@FINAL INT,@VARLETRAS VARCHAR(80),@VARNUMEROS VARCHAR(80)

SET @INICIAL = 1
SET @FINAL = LEN(@TEXTO)
SET @VARLETRAS = ''
SET @VARNUMEROS = ''

WHILE   @INICIAL < @FINAL+1
BEGIN
SET  @VARLETRAS = @VARLETRAS + CASE WHEN SUBSTRING(@TEXTO,@INICIAL,1) NOT IN ('1','2','3','4','5','6','7','8','9','0') THEN SUBSTRING(@TEXTO,@INICIAL,1) ELSE ''  END
SET @INICIAL = @INICIAL + 1
END
RETURN @VARLETRAS  
END

--- execução
--select DBO.FX_ENDERECO('casa 123') AS 'ENDERECO', 	DBO.FX_NUMERO('casa 123') AS 'NUMERO'

Compartilhar este post


Link para o post
Compartilhar em outros sites

A função é bacana, mas tem que tomar cuidado com seu uso. Por exemplo, no estado Goias/Brasilia os endereços podem estar assim:

 

Rua A Quadra 666 Lote 999. Neste caso sua função não resolveria muita coisa.

Exceções existem :P

 

De resto, parabéns pela iniciativa :clap:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui no Rio é muito comum o SN (sem número).

 

Brasília tem endereços que parecem nomes de espaçonaves da Star Trek ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.