Atualização na coluna Endereço
18/07/2007
0
Estou com uma duvida na qual necessito de ajuda.
Tenho uma coluna chamada ds_endereco e outra coluna chamda ds_numero.
O problema que esta acontecendo é o seguinte:
Muitos dos cadastros estão com os numeros preenchidos no campo ds_endereco como segue exemplo abaixo:
Estrada das palmeira,97.
Nesse mesmo cadastro a coluna numero esta nulo.. devido ao preenchimento dele no endereço.
O que necessito é pegar esses numeros e inserir na coluna Numero..
Qual o melhor filtro e como tirar ele da coluna endereço e mandar na coluna numero..
Será que devo mandar no filtro algo como SUBSTRING, se for isso a maioria dos cadastros não contém uma posição exata..
Conto com a ajuda de todos..
Abraços...
Obs: Estou utilizando SQL SERVER 2000.
Flasp2000
Curtir tópico
+ 0Posts
18/07/2007
Psergio.p
Se puder me mandar a tabela em formato texto eu dou uma olhada!
Gostei + 0
18/07/2007
Flasp2000
Apenas quero saber como faço a rotina de select com insert.. Procedure. trigger, sei lá isso que quero saber... aí monto na estrutura...
Como pego os numeros apenas com (INT)???
Como insirir eles de uma coluna pra outra... São essas minha duvidas apenas...
Gostei + 0
18/07/2007
Flasp2000
Gostei + 0
19/07/2007
Psergio.p
CREATE TABLE TESTE_STR
(CODID INT NOT NULL PRIMARY KEY IDENTITY,
ENDERECO VARCHAR(50),
NUMERO INT)
GO
INSERT INTO TESTE_STR VALUES(´BLA BLA BLA, 45´,NULL)
INSERT INTO TESTE_STR VALUES(´BLA BLA BLA 45´,NULL)
INSERT INTO TESTE_STR VALUES(´Rua BLA BLA BLA - 45´,NULL)
GO
CREATE FUNCTION DBO.GETNUMERO(@ENDER VARCHAR(50))
RETURNS INT AS
BEGIN
DECLARE @END INT
DECLARE @STRNUM VARCHAR(10)
SET @END = 1
SET @STRNUM = ´´
WHILE @END <= LEN(@ENDER) BEGIN
IF SUBSTRING(@ENDER,@END,1) NOT IN(´,´,´-´)
AND ISNUMERIC(SUBSTRING(@ENDER,@END,1)) = 1 BEGIN
SET @STRNUM = @STRNUM + SUBSTRING(@ENDER,@END,1)
END
SET @END = @END + 1
END
RETURN CONVERT(INT,@STRNUM)
END
GO
UPDATE TESTE_STR SET NUMERO = (SELECT DBO.GETNUMERO(ENDERECO) FROM TESTE_STR TSTR
WHERE TSTR.CODID = TESTE_STR.CODID)
Gostei + 0
19/07/2007
Flasp2000
Por exemplo, eu poderia tratar esses dados em uma tabela virtual... como faço ???
So ainda leigo na parada.. to entrando de cabeça nisso..
Obs: Desculpa incomodar. mas preciso mesmo disso cara..
Abraços.. e muito obrigado pela ajuda inicial.
Gostei + 0
19/07/2007
Emerson Nascimento
1. na função passada, se fosse indicado como endereço: ´Rua 25 de Março, 135´, o número retornado seria 25.135 o que, obviamente, está errado
2. era preciso retornar também o endereço sem o número informado para o campo endereco
por conta disso, criei essas duas funções:
CREATE FUNCTION DBO.GETENDERECO(@ENDER VARCHAR(100)) RETURNS VARCHAR(100) AS BEGIN DECLARE @END INT DECLARE @ENDERECO VARCHAR(100) SET @END = LEN(@ENDER) SET @ENDERECO = ´´ WHILE @END >= 1 BEGIN IF SUBSTRING(@ENDER,@END,1) IN(´,´,´-´,´ ´) BEGIN SET @ENDERECO = SUBSTRING(@ENDER,1,@END-1) SET @END = 1 END SET @END = @END - 1 END IF RIGHT(@ENDERECO, 1) IN (´,´,´-´,´ ´) SET @ENDERECO = SUBSTRING(@ENDERECO, 1, LEN(@ENDERECO)-1) RETURN @ENDERECO END
e
CREATE FUNCTION DBO.GETNUMERO(@ENDER VARCHAR(100)) RETURNS VARCHAR(5) AS BEGIN DECLARE @END INT DECLARE @STRNUM VARCHAR(10) SET @END = LEN(@ENDER) SET @STRNUM = ´´ WHILE @END >= 1 BEGIN IF SUBSTRING(@ENDER,@END,1) IN(´,´,´-´,´ ´) BEGIN SET @STRNUM = SUBSTRING(@ENDER,@END+1,LEN(@ENDER)) SET @END = 1 END SET @END = @END - 1 END RETURN @STRNUM END
dessa forma o update seria:
UPDATE SUA_TABELA SET ds_NUMERO = dbo.GetNumero(CAMPO_ENDERECO), ds_ENDERECO = dbo.GetEndereco(CAMPO_ENDERECO) WHERE ds_NUMERO IS NULL
note que a função GetNumero retorna o número como varchar. se esse não for o tipo correto, faça a conversão como foi mostrado na função do [b:6f2a408a33]psergio.p[/b:6f2a408a33].
obs.: não fiz a conversão do numero parao tipo inteiro porque pode haver algum numero 25A ou coisa parecida.
Gostei + 0
19/07/2007
Psergio.p
Na verdade montei esta função apenas para dar uma luz ao nosso amigo!
Más vejo que agora você matou a pau o problema dele!
Gostei + 0
19/07/2007
Flasp2000
Estarei tentando executar o script, como ainda sei muita pouca coisa rs.. quando lí fiquei até que apavorado... estarei tentando decifrar rs...
Aproveitando o momento, vcs conhecem algum curso aki em são paulo... Gostaria de estar estudando mais o assunto de banco.. se conseguirem me passar algumas dicas agradeço..
meu msn é flavinho88@hotmail.com e/ou e-mail flasp2000@gmail.com
Muito obrigado!
Gostei + 0
19/07/2007
Psergio.p
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)