- Este tópico contém 13 respostas, 5 vozes e foi atualizado pela última vez 16 anos, 1 mês atrás por
Lescovitz.
-
AutorPosts
-
19 de janeiro de 2010 às 9:55 pm #92171
Lescovitz
ParticipanteOlá Pessoal!!!
Sou novo no Fórum!!!
Tenho uma tabela que contem dados no seguinte formato: 7070707-7, necessito retirar esse “hifen” 70707077.
Gostaria de fazer isso via comando sql para não necessita mandar para o desenvolvimento criar uma rotina só para isso pois irei utilizar somente uma vez. Necessito que fosse alterado no banco mesmo e não só na consulta.
Gostaria muito da ajuda de vocês!!
Desde já agradeço a atenção!!!!19 de janeiro de 2010 às 10:00 pm #92172fsitja
ParticipanteOlá Lescovitz, seja bem-vindo ao forum!
Creio que sua pergunta foi respondida a 10 minutos atrás sem querer, pois coincidentemente é a mesma coisa do tópico abaixo:
https://www.profissionaloracle.com.br/mo … pic&t=3850Vocês não trabalham juntos, né? 😆
Só para adiantar: qual sua versão do Oracle?
Se for 10g para cima dá para usar expressões regulares, ou um replace simples funciona em qualquer versão pois seu campo varchar é menos complexo.
SQL> select regexp_replace('7070707-7', '[^[:digit:]]')
2 from dual;REGEXP_REPLACE('7070707-7','[^
70707077
SQL> select replace('7070707-7', '-')
2 from dual;REPLACE('7070707-7','-')
70707077
SQL>
19 de janeiro de 2010 às 10:12 pm #92175Lescovitz
ParticipanteCoincidencia más não trabalhamos juntos!!!
Li o tópico dele, não sei se não entendi mas acho que o dele é mesmo para consulta!!!
Necessito editar essa tabela no banco de dados e não entendi muito sua sugestão!!!
Teria como ser um pouco mais claro, porque no meu conhecimento o comando replace é somente para consulta. São 2550 registros que necessito fazer.19 de janeiro de 2010 às 10:12 pm #92176hudsona
Participante“Necessito que fosse alterado no banco mesmo e não só na consulta. ”
Se é pra alterar no BANCO é um update não ?
rsrsrs
19 de janeiro de 2010 às 10:16 pm #92179Lescovitz
ParticipanteMe banco de dados é o 9i. esqueci de responde no tópico anterior.
19 de janeiro de 2010 às 10:18 pm #92180Lescovitz
ParticipanteNão sei realizar essa operação via update, gostaria de instruções.
19 de janeiro de 2010 às 10:29 pm #92182Anônimo
Olá Lescovitz fiz um ex:
update table_name
set column_name = regexp_replace(column_name, ‘[^[:digit:]]’)
where column_name like ‘%-%’;veja se isso resolve seu problema.
Abraços
19 de janeiro de 2010 às 10:38 pm #92184Lescovitz
ParticipanteExecutei esse comando:
update conversao_material_convenio
set cd_material_convenio = regexp_replace(cd_material_convenio, ‘[^[:digit:]]’)
where cd_material_convenio like ‘%-%’Conforme o que entendi do seu exemplo mas não funcionou.
19 de janeiro de 2010 às 10:40 pm #92185Lescovitz
ParticipanteRetorna o seguinte erro: ORA-00904 invalid column name
Cause: The column name entered is either missing or invalid.
Action: Enter a valid column name. A valid column name must begin with a letter, be less than or equal to 30 characters, and consist of only alphanumeric characters and the special characters $, _, and #. If it contains other characters, it must be enclosed in double quotation marks. It may not be a reserved word.
19 de janeiro de 2010 às 10:45 pm #92186Anônimo
Qual erro?
Confira se realmente o nome da coluna está correto19 de janeiro de 2010 às 10:46 pm #92187fsitja
ParticipanteAlgo como:
update conversao_material_convenio
set cd_material_convenio = replace(cd_material_convenio, '-')
where cd_material_convenio like '%-%'
Porém você continua com um problema… pois qualquer um pode entrar na sua tabela e inserir algo inválido ou dar update para caractere.
O ideal é criar uma coluna nova de tipo number e popular ela com os dados corretos.
19 de janeiro de 2010 às 10:46 pm #92189Lescovitz
ParticipanteErro ja citado a cima.
19 de janeiro de 2010 às 10:47 pm #92190Leonardo Litz
ParticipanteSe seu banco é 9i a função regexp_replace não existe, esta foi implementada apartir do 10g
Faça:
update conversao_material_convenio
set cd_material_convenio = replace(cd_material_convenio,'-',null)
where cd_material_convenio like '%-%' ;
Antes de commitar, verifique se a alteração foi feita com sucesso!!!!
Valeu Leonardo Litz
20 de janeiro de 2010 às 4:16 pm #92199Lescovitz
ParticipanteA todos que postaram e tentaram ajudar muito obrigado. Litz você salvou meu dia, muito obrigado. O que precisar estamos ai!!!!!
-
AutorPosts
- Você deve fazer login para responder a este tópico.