Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Legollas Dias

Select não retorna String.

Recommended Posts

Pessoal espero que alguem possa me ajudar, estou com o seguinte problema.

Eu possuo a seguinte tabela


CREATE TABLE  "CIDADE" 
   (    "ID" NUMBER(10,0) NOT NULL ENABLE, 
    "ESTADO" NUMBER(10,0), 
    "UF" VARCHAR2(10), 
    "NOME" VARCHAR2(150), 
     CONSTRAINT "CIDADE_PK" PRIMARY KEY ("ID") ENABLE
   )
/

CREATE OR REPLACE TRIGGER "BI_CIDADE" 
before insert on "CIDADE" 
for each row 
begin 
  if :NEW."ID" is null then 
    select "CIDADE_SEQ1".nextval 
    into :NEW."ID" 
    from sys.dual; 
  end if; 
end; / ALTER TRIGGER "BI_CIDADE" ENABLE /

Ela esta populada com todos os municipios do brasil, exatamente 9714 linhas.

a criterio de testes, eu estou fazendo alguns selects. tentarei exemplificar.

Quando eu faço.

 

select * from cidade
where id=2000
ID ESTADO UF NOME 2000 9 GO Agua Limpa

Bacana. Ate ai tudo bem. se o select for de uma coluna (number)

as colunas UF e Nome q sao Varchar2, acontece o seguinte.

 

select * from cidade
where uf='GO'

aparece a seguinte mensagem.

dados não encontrados

 

 

nao sei se o comando muda por ser uma String, soh pra adiantar, ja testei com aspas, sem aspas, com aspas simples e tdo.

Deve ser algo bem besta, mas nao consegui achar no google, e eu sou novo na area, quero saber oq acontece, e se o fato desse select nao estar encontrando esses dados pode me trazer algum problema mais tarde. Jah estou prevendo o risco. =/

desde ja obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom , UF tem 10 posiçõesem sua base bastaria 2.

 

"UF" VARCHAR2(10)

 

bastaria ser

 

"UF" VARCHAR2(2)

 

 

Faça

update cidade set uf = trim(uf);
alter table "CIDADE" modify  "UF" VARCHAR2(2);

mas faça uma salva antes é se possível teste numa base de testes

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta,

poxa amigao, funcionou aki, mas eu nao fiz os 2 codigos seguidos e nao sei oq foi oq fez funcionar.

poderia me dizer pra q serve esse update 'trim'?!

Agora eu percebi q na tabela esta tdo salvo em caixa alta, que foi a forma q eu dei o insert pelo .txt.

se eu der um select where uf='df', nao acha nada, porem com o select where uf='DF', ele retorna certinho.

Teria alguma forma de eu deixar essa diferenciaçao de caixa alta e baixa inexistente, tipo, queria dar o select com dF, Df, DF, df e conseguir o msm resultado, isso tem como ou nao?!

Obrigado, ja ajudou bastante, mas fikei na duvida desse update trim ai =D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lembre que "RJ" é diferentevde "RJ " , TRIM tira os brancos.

 

 

Use UPPER para transformar em maisculas.

 

Algo assim

 

Select * from clientes

Where upper(uf) = upper('RJ')

 

O 'RJ' poderia ser um parametro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom gostaria de fazer o mesmo para a coluna nomes. Tambem nao consigo fazer um select dessa coluna, posso fazer o trim da mesma forma?! ou sera q os nomes compostos que tem espaço vao se juntar?! tipo Rio de Janeiro vai virar RioDeJaneiro?!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não. o trim só faz nas "pontas" início e fim da string.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.