Atualização na coluna Endereço
Bom dia pessoal,
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.
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
Curtidas 0
Respostas
Psergio.p
18/07/2007
Teriamos que encontrar um padrão, talvez pegar somente a parte numerica...não sei...tem que analisar melhor!
Se puder me mandar a tabela em formato texto eu dou uma olhada!
Se puder me mandar a tabela em formato texto eu dou uma olhada!
GOSTEI 0
Flasp2000
18/07/2007
Então velhinho, o problema não é esse, acho que alguns acertos com REPLACE E SUBSTRING, eu consigo entrar no padrão...
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...
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
Flasp2000
18/07/2007
Então velhinho, o problema não é esse, acho que alguns acertos com REPLACE E SUBSTRING, eu consigo entrar no padrão...
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 inserir eles de uma coluna pra outra... São essas minha duvidas apenas...
GOSTEI 0
Psergio.p
18/07/2007
Estou te mandando um script T-SQL para te ajudar, se você não entender o que eu fiz posta novamente a msg. []s
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)
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
Flasp2000
18/07/2007
Poderia me ajudar melhor velhinho, colocar comentários, eu não entendí rs....
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.
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
Emerson Nascimento
18/07/2007
baseado na dica do nosso colega [b:6f2a408a33]psergio.p[/b:6f2a408a33], fiz essa adaptação por dois motivos:
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:
e
dessa forma o update seria:
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.
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
Psergio.p
18/07/2007
Legal Emerson, ficou bem legal!
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!
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
Flasp2000
18/07/2007
Caros colegas,
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!
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
Psergio.p
18/07/2007
Acho que um bom livro de SQL Server pode te ajudar além de ler regularmente a SQL Magazine :)
GOSTEI 0