Extrair números de campo varchar em consulta SQL

Delphi

10/08/2004

É possível extrair apenas números de um campo varchar numa consulta SQL? Por exemplo, para extrair apenas o ano de um campo data, usa-se extract(year from data).


Evertonac

Evertonac

Curtidas 0

Respostas

Motta

Motta

10/08/2004

existem funcoes propietarias , tipo to_number do Oracle.

no sql ansi existe o CAST

select cast(numero) as integer
from tabela


creio que a sintaxe é assim


GOSTEI 0
Evertonac

Evertonac

10/08/2004

Cast converte o campo de varchar para integer, neste caso. O que quero é extrair numa consulta SQL, na cláusula where, apenas números de um campo varchar que pode conter também outros caracteres.

existem funcoes propietarias , tipo to_number do Oracle. no sql ansi existe o CAST select cast(numero) as integer from tabela creio que a sintaxe é assim



GOSTEI 0
Motta

Motta

10/08/2004

conheço funcoes proprietarias do Oracle

substr - equivale ao copy do delphi
instr - eq. ao pos

no ansi , não sei


GOSTEI 0
Anderson Possamai

Anderson Possamai

10/08/2004

preciso disto tambem... alguem sabe?
GOSTEI 0
Huidemar Costa

Huidemar Costa

10/08/2004

Faça algo mais ou menos assim:

function SoNumero(texto : String): String; 
var   
  I : Byte; 
begin   
   Result := '';   
   for I := 1 To Length(texto) do      
       if texto [I] In ['0'..'9'] Then        
            Result := Result + texto [I]; 
end; 
GOSTEI 0
Lucas Ramos

Lucas Ramos

10/08/2004

Função Sql SErver

ALTER FUNCTION [dbo].[SO_NUMERO] ( @PARAMETRO VARCHAR(255) ) RETURNS VARCHAR(255) AS
BEGIN

	DECLARE @TAM INT
	DECLARE @I   INT
	DECLARE @CARACTER VARCHAR(1)
	DECLARE @RESULTADO VARCHAR(60)

	SET @TAM = LEN(@PARAMETRO)
	SET @I   = 1

	SET @RESULTADO = ''
	WHILE @I <= @TAM
	BEGIN

	   SET @CARACTER = SUBSTRING(@PARAMETRO, @I, 1)
	
	   
	   IF (@CARACTER = '0') OR
		  (@CARACTER = '1') OR
		  (@CARACTER = '2') OR
		  (@CARACTER = '3') OR
		  (@CARACTER = '4') OR
		  (@CARACTER = '5') OR
		  (@CARACTER = '6') OR
		  (@CARACTER = '7') OR
		  (@CARACTER = '8') OR
		  (@CARACTER = '9') 

		   SET @RESULTADO = @RESULTADO + @CARACTER

	   SET @I = @I + 1
	END

    RETURN @RESULTADO

END
GOSTEI 0
POSTAR