Separar caracter com espaço

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
marcio_loko
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 25
Registrado em: Qua, 24 Fev 2010 2:03 pm
Localização: são paulo

Bom dia pessoal

Tenho um campo acho tem a seguinte informacao:

Codigo:
1
12
123
1236
14566
186455

eu 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
alguém pode me ajudar?

Marcio
thiago_r_f
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 43
Registrado em: Qui, 17 Abr 2008 4:02 pm
Localização: Rio de Janeiro - RJ
O Backup é meu pastor e nada me faltará!
Thiago Rodrigues de Farias

A idéia é essa:

Selecionar tudo

DECLARE
  v_variavel VARCHAR2(50) := '&variavel';
  v_fim  v_variavel%TYPE;
BEGIN
  FOR i IN 1..LENGTH(v_variavel) LOOP
    IF i <> LENGTH(v_variavel) THEN
      v_fim := v_fim||SUBSTR(v_variavel, i, 1)||' ';
    ELSE
      v_fim := v_fim||SUBSTR(v_variavel, i, 1);
    END IF;
  END LOOP;
  DBMS_OUTPUT.PUT_LINE(v_fim);
END;
/
Agora é só alterá-la transformando-a em função ou adequando-a a sua necessidade.
Abs
Avatar do usuário
fsitja
Rank: OraSauro
Rank: OraSauro
Mensagens: 611
Registrado em: Seg, 19 Jan 2009 4:29 pm
Localização: Gaúcho no Rio de Janeiro - RJ
"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html

OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist

O seguinte abaixo coloca um espaço entre todos caracteres:

Selecionar tudo

select rtrim(regexp_replace(codigo, '(.)', '\1 ')) poe_espaco
  from tab1;
Exemplo de execução:

Selecionar tudo

SQL> with tab1 as (
  2  select 1 codigo from dual union all
  3  select 12 from dual union all
  4  select 123 from dual union all
  5  select 1236 from dual union all
  6  select 14566 from dual union all
  7  select 186455 from dual)
  8  -- fim dos dados de exemplo, início do código
  9  select rtrim(regexp_replace(codigo, '(.)', '\1 ')) poe_espaco
 10    from tab1;
 
POE_ESPACO
--------------------------------------------------------------------------------
1
1 2
1 2 3
1 2 3 6
1 4 5 6 6
1 8 6 4 5 5
 
6 rows selected
 
SQL> 
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante