- Este tópico contém 11 respostas, 3 vozes e foi atualizado pela última vez 15 anos, 9 meses atrás por
MARCIO_LOK.
-
AutorPosts
-
31 de maio de 2010 às 5:43 pm #94311
MARCIO_LOK
ParticipanteBom dia pessoal
Tenho um campo acho tem a seguinte informacao:
Codigo:
1
12
123
1236
14566
186455eu precisaria colocar um espaço entre eles, tipo assim:
1
1 2
1 2 3
1 2 3 6
1 4 5 6 6
1 8 6 4 5 5
Alguem pode me ajudar?Marcio
31 de maio de 2010 às 5:51 pm #94312Leonardo Litz
ParticipanteUse um um loop:
declarev_string varchar2(20):= '123456';
v_string_retorno varchar2(40);
beginfor dd in 1..length(v_string) loop
v_string_retorno := v_string_retorno||(substr(v_string,dd,1)||' ');
end loop;
dbms_output.put_line(v_string_retorno);
end;
Value Leonardo Litz
31 de maio de 2010 às 6:08 pm #94314MARCIO_LOK
ParticipanteSó esqueci de mencionar que esse campo está dentro de um select…
exemplo
select codconta, desricao, valor
from tabelaesta assim:
1 Ativo 345.88
12 Qualquer Coisa 5678,99
123 Teste 567.99
4567 Teste2 666.88queria que ficasse assim:
1 Ativo 345.88
1 2 Qualquer Coisa 5678,99
1 2 3 Teste 567.99
4 5 6 7 Teste2 666.88Ou seja identico, so que o codigo separado.
Obrigado31 de maio de 2010 às 6:29 pm #94316Leonardo Litz
ParticipanteCrie uma função que recebe a string como parametro e retorne à formatada, utilizando o algoritmo que escrevi acima. Assim você poderá utiliza-la em um select.
Vlw Leonardo Litz
31 de maio de 2010 às 6:41 pm #94317MARCIO_LOK
Participantehumm
esse é o problema, nao sei criar funcao……
pode me ajudar, para criar essa funcao?
Valeu31 de maio de 2010 às 7:00 pm #94318Leonardo Litz
ParticipanteAssim:
create or replace function fnc_poe_espacos(p_string in varchar2)
return varchar2v_string_retorno varchar2(40);
beginfor dd in 1..length(p_string) loop
v_string_retorno := v_string_retorno||(substr(p_string,dd,1)||' ');
end loop;
return (v_string_retorno);
end;
E para executar:
select fnc_poe_espaco(coluna)
from table;Vlw Leonardo Litz
31 de maio de 2010 às 7:31 pm #94319MARCIO_LOK
ParticipanteOla,
Executei o primeiro script, ok ele executou com sucesso, depois fui aplicar no select, ele deu a seguinte mensagem…
ORA-06575: Pacote ou função ESPACOS está em um estado inválido
Passos que executei:
create or replace function fnc_poe_espacos(p_string in varchar2)
return varchar2
v_string_retorno varchar2(40);
begin
for dd in 1..length(p_string) loop
v_string_retorno := v_string_retorno||(substr(p_string,dd,1)||’ ‘);
end loop;
return (v_string_retorno);
end;depois:
select fnc_poe_espacos(codConta) from cconta;
Dai retornou essa mensagem:
ORA-06575: Pacote ou função ESPACOS está em um estado inválidoO que seria isso amigo?
Obrigado31 de maio de 2010 às 7:35 pm #94320Leonardo Litz
ParticipanteCompila denovo a function, havia um erro de sintaxe.
create or replace function fnc_poe_espacos(p_string in varchar2)
return varchar2
is
v_string_retorno varchar2(40);
begin
for dd in 1..length(p_string) loop
v_string_retorno := v_string_retorno||(substr(p_string,dd,1)||' ');
end loop;
return (v_string_retorno);
end;
Vlw Leonardo Litz
31 de maio de 2010 às 7:36 pm #94322MARCIO_LOK
ParticipanteOpa… ele deu o seguinte erro:
Ele executa a funcao mais da o seguinte erro:
Create function, executed in 0.017 sec.
PLS-00103: Encontrado o símbolo “V_STRING_RETORNO” quando um dos seguintes símbolos era esperado:. @ % ; is authid as cluster order using external character
deterministic parallel_enable pipelined aggregate
O símbolo “is” foi substituído por “V_STRING_RETORNO” para continuar.
Valeu31 de maio de 2010 às 7:39 pm #94323MARCIO_LOK
ParticipanteRapaz, parabens
Muito obrigado, ficou perfeito, tenha um bom dia, valeu mesmo
Deus abencoeMarcio
31 de maio de 2010 às 9:44 pm #94324burga
ParticipanteSó pra constar, uma outra solução para o seu problema seria usar expressão regular, caso você esteja utilizando o Oracle 10g ou mais recente:
SELECT REGEXP_REPLACE(13232124, '(.)', '1 ') FROM dual;😀
31 de maio de 2010 às 9:49 pm #94325MARCIO_LOK
Participantevaleu
-
AutorPosts
- Você deve fazer login para responder a este tópico.