10/08/2004

Extrair números de campo varchar em consulta SQL

É 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

Respostas

10/08/2004

Motta

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


Responder Citar

10/08/2004

Evertonac

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



Responder Citar

10/08/2004

Motta

conheço funcoes proprietarias do Oracle

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

no ansi , não sei


Responder Citar

20/01/2016

Possamai

preciso disto tambem... alguem sabe?
Responder Citar

20/01/2016

Huidemar Costa

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; 
Responder Citar

20/01/2016

Riechelmann

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
Responder Citar