Adicionar espaços em branco

Scripts Diversos para o Oracle SQL*Plus. (Relacionado a ferramenta Oracle SQL*Plus, para questões de SQL, usar o forum SQL)
Responder
Avatar do usuário
tatianeweb
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 10
Registrado em: Ter, 26 Fev 2008 5:20 pm
Localização: ARACAJU-SE
Tati

Olá pessoal, :D
Eu to com o seguinte problema:

Estou fazendo um relatório no qual me pede campos que não existe no meu banco! E a condição é que quando não existir adicione espaços em brancos, por exemplo

você tem uma tabela chamada alunos com os campos, nome, endereço, telefone, mas no relatório é pra constar também o nome da mãe, mas no meu banco não tem essa informação, então será necessário adicionar 75 espaços em brancos em cada registro de cada aluno, no lugar onde estaria o nome da mãe!

Mas como fazer isso????
alguém pode me ajudar????
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Olá moça.

Tenta este exemplo:

Selecionar tudo

-- colocar o espaço quando nulo
SELECT empno,nvl(ename,rpad(' ',75)) nome  
FROM emp
WHERE ROWNUM <= 3;
--
--resultado:
      7999	                                                                           
      7369	SMITH
      7499	ALLEN

-- analisar o tamanho (se realmente preencheu)
SELECT  empno,length(nvl(ename,rpad(' ',75))) tamanho  
FROM emp
WHERE ROWNUM <= 3;

-- resultado:
      empno tamanho
      7999	 75                                    
      7369	 5                                     
      7499	 5                                     

Dê uma procurada por LPAD ou RPAD aqui no fórum que irá encontrar exemplos interessantes.
Avatar do usuário
tatianeweb
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 10
Registrado em: Ter, 26 Fev 2008 5:20 pm
Localização: ARACAJU-SE
Tati

Isso não é o que estou precisando
O problema é que eu preciso gerar uma coluna inteira com espaços em branco. Eu não quero uma condição pra quando for nulo gerar espaços em branco! Foi pedido informações que eu não tenho na minha base de dados, antes eu preenchia a coluna com um 'X' mas foi exigido trocar o caracter X por 75 espaços em branco!

O LPAD e o RPAD me dá suporte em condições para acrescentar espaços em branco em um campo que já existe, mas o que eu estou precisando é de algo que me de condições de gerar uma coluna inteira, como se fosse um novo campo na minha tabela!

Entendeu agora???
rogenaro
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Sex, 30 Mar 2007 7:26 pm
Localização: Londrina - PR
Rafael O. Genaro

Não sei se entendi muito bem, você precisa apenas de uma consulta que retorne os campos extras?

você poderia usar:

Selecionar tudo

select empno
     , ename
     , deptno                       
     , lpad(null, 15, ' ') sobrenome
     , lpad(null, 16, ' ') endereco
from   emp
;
Lembrando que os campos sobrenome e endereço não existem realmente na tabela emp.

Para facilitar sua vida, você pode colocar esta consulta em uma view e disponibilizá-la para a sua aplicação.


Caso não seja isso, favor explicar um pouco melhor o que você precisa, e para que finalidade (onde será usado, etc..)
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Tatiana,

Caso não exista, faça uma sub-query na tua query principal que resolve teu problema.

Selecionar tudo

SELECT empno,
       ename,
       (SELECT 'essa_coluna_eu_não_tenho' FROM dual) X
FROM emp;
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Tatiana,

Caso não exista, faça uma sub-query na tua query principal que resolve teu problema.

Selecionar tudo

SELECT empno,
       ename,
       (SELECT 'essa_coluna_eu_não_tenho' FROM dual) X
FROM emp;
O exemplo que o Rafael passou também serve para solucionar este problema.
Avatar do usuário
tatianeweb
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 10
Registrado em: Ter, 26 Fev 2008 5:20 pm
Localização: ARACAJU-SE
Tati

Eu tentei fazer o que o Rafael ensinou mas esse foi o resultado!

Antes de acrescentar o código que Rafael me ensinou tava assim:

Selecionar tudo

SQL> select distinct cod_est_civil||DES_EST_CIVIL
  2  from estado_civil;
1SOLTEIRO(A)
2CASADO(A)
3SEPARADO(A) JUDICIALMENTE
4DIVORCIADO(A)
5VIÚVO(A)
Depois da dica ficou assim:

Selecionar tudo

SQL> select distinct cod_est_civil || lpad(null,5,' ')nulo || DES_EST_CIVIL
  2  from estado_civil;
select distinct cod_est_civil || lpad(null,5,' ')nulo || DES_EST_CIVIL
                                                                      *
ERRO na linha 1:
ORA-00923: FROM keyword not found where expected
Tentei a dica de Trevisolli, mas também não funcionou...
Eu devo estar fazendo algo errado... mas o que??? Tão vendo algo errado aí por favor???

Selecionar tudo

SQL> select distinct cod_est_civil || (select 'nulo' from dual)X || DES_EST_CIVIL
  2  from estado_civil;
select distinct cod_est_civil || (select 'nulo' from dual)X || DES_EST_CIVIL
                                                                *
ERRO na linha 1:
ORA-00923: FROM keyword not found where expected
Espero por socorro galera
E desde já muito obrigada por vocês estarem me ajudando!
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Tatiane

Tenta desta forma:

Selecionar tudo

select distinct cod_est_civil || lpad(null,5,' ') || DES_EST_CIVIL  nulo -- coloquei o alias no final.
Avatar do usuário
tatianeweb
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 10
Registrado em: Ter, 26 Fev 2008 5:20 pm
Localização: ARACAJU-SE
Tati

Ainda não gerou a coluna no meio com os 5 caracteres em branco como esperado, veja

Selecionar tudo

SQL> select distinct cod_est_civil || lpad(null,5,' ') || DES_EST_CIVIL  nulo
  2  FROM estado_civil
  3  ;
1SOLTEIRO(A)
2CASADO(A)
3SEPARADO(A) JUDICIALMENTE
4DIVORCIADO(A)
5VIÚVO(A)
e agora???
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Tenta desta forma, Tatiane:

Selecionar tudo

SELECT empno || LPAD(' ',75) || ename 
FROM emp;
Faça a adaptação pra tua tabela.
Avatar do usuário
tatianeweb
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 10
Registrado em: Ter, 26 Fev 2008 5:20 pm
Localização: ARACAJU-SE
Tati

Agoooooooooooooora funcionou :lol:

valeu mesmo

Selecionar tudo

SQL> select distinct cod_est_civil || lpad(' ',5) ||  DES_EST_CIVIL
  2  from estado_civil;
1     SOLTEIRO(A)
2     CASADO(A)
3     SEPARADO(A) JUDICIALMENTE
4     DIVORCIADO(A)
5     VIÚVO(A)
Valeu Trevisolli....

Muito obrigada pela ajuda galera


Um abraço
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Opa,

Precisando, conta com a gente.
davidmeloboy
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 54
Registrado em: Sex, 05 Set 2008 1:53 pm
Localização: Parobé - RS
Contato:
David.

Selecionar tudo

SELECT empno
			,ename
			,(SELECT RPAD(' ', 75) "NOME DA MAE"
					FROM dual) "Nome da Mãe"
	FROM emp;

Tenta esse código!
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 11 visitantes