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
Curtidas 0
Respostas
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
no sql ansi existe o CAST
select cast(numero) as integer
from tabela
creio que a sintaxe é assim
GOSTEI 0
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
10/08/2004
conheço funcoes proprietarias do Oracle
substr - equivale ao copy do delphi
instr - eq. ao pos
no ansi , não sei
substr - equivale ao copy do delphi
instr - eq. ao pos
no ansi , não sei
GOSTEI 0
Anderson Possamai
10/08/2004
preciso disto tambem... alguem sabe?
GOSTEI 0
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
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