- Este tópico contém 10 respostas, 5 vozes e foi atualizado pela última vez 17 anos, 11 meses atrás por santosclay.
-
AutorPosts
-
5 de fevereiro de 2007 às 10:08 pm #78612WendelParticipante
Olá
Estou com problema com o comando Like quando altero a sessao do oracle para o banco não diferenciar maisculas e minusculas, com os seguintes parametros:
alter session set nls_comp = ansi
alter session set nls_sort = generic_baseletterao executar o comando abaixo o banco retorna os resultados corretos:
select * from fornecedor where no_razaosocial_fornecedor = ‘telSon’ao executar o comando abaixo o banco não retorna os resultados corretos:
select * from fornecedor where like no_razaosocial_fornecedor = ‘%elSon’Alguém sabe como fazer funcionar o comando LIKE funcionar depois de alterada a sessão. Valeu!
WENDEL
5 de fevereiro de 2007 às 10:19 pm #78613Marcio68AlmeidaParticipantecomando LIKE
Select * from tabela where coluna LIKE '%string%'
5 de fevereiro de 2007 às 11:47 pm #78615santosclayParticipanteE ai cara blz!!!
Vc poderia testar o comando abaixo pra ver se resolvemos o seu problema:
alter session set nls_comp=’LINGUISTIC’
Aguardo retorno Clayton.
6 de fevereiro de 2007 às 12:10 am #78617WendelParticipanteClayton
Esse parâmetro não é reconhecido pelo Oracle 9i. Da a seguinte mensagem ao tentar executar: ORA-12705: valor inválido ou desconhecido do parâmetro NLS especificado
Alguem já teve esse problema??
Wendel
6 de fevereiro de 2007 às 12:18 am #78619drumondParticipanteCara só uma pergunta, não seria mais facil usar as funçoes do oracle tipo UPPER ou LOWER, para comparar ? Aqui usamos desta forma … 🙂
6 de fevereiro de 2007 às 2:48 pm #78622Marcio68AlmeidaParticipanteDrumond, o comando serve também para não diferenciar acentuações e cedilhas…
Wendel, você não está encerrando a sessão e fazendo uma nova conecção, ou então alterando a sessão no SQL Plus e tentando a função dentro de um programa, né ???
6 de fevereiro de 2007 às 5:02 pm #78624WendelParticipanteMarcio antes de por isso na aplicação eu estou testando no TOAD FOR ORACLE e é nele que não funciona. Verifiquei com um colega e ele falou que ao alterar esse comando de sessão o Like náo funciona mesmo, e também outros comandos, mas infelizmente ele não sabia qual os comandos que não funcionam. Alguem sabe qual os comando que não funciona ao alterar o paramentros de sessão abaixo:
alter session set nls_comp = ansi
alter session set nls_sort = generic_baseletterPois assim eu vou tratar no código com UPPER e LOWER essas partes
Wendel
6 de fevereiro de 2007 às 5:30 pm #78625santosclayParticipanteOlá amigos.
Realmente o que eu te disse estava errado pois a minha fonte foi a documentação do ora 10.
Eu dei uma lida na documentação do ora 9
http://download-east.oracle.com/docs/cd … tm#1007931
E o seu comando esta certo.
Porém não consegui terminar a documentação para ver se existe alguma restrição neste comando.
Abraços e desculpe-me pela falha.
Clayton.
P.S.”Estou continuando a pesquisa sobre o assunto rs…”.
12 de fevereiro de 2007 às 2:25 pm #78700santosclayParticipanteOlá Amigo blz!!!
Cara eu fiquei pensando sobre o seu problema e esqueci de perguntar uma coisa:
Em que SO(Linux, Windows, UNIX …..) esta rodando o seu banco?
Digamos que o banco esteja rodando em linux e o encoding do mesmo não esteja configurado para suportar português brasil, o oracle pode ter problemas para interpretar o comando Like em função da cofiguração do SO.
Abraços Clayton.
12 de fevereiro de 2007 às 3:07 pm #78703chduarteParticipanteNa verdade neste caso o like nao compara “interpretando” o idioma. Ele utiliza-se de regras binarias.
Também, o portugues, ingles ou alemao que o banco da suporte é relacionado às mensagens.
Tente a seguinte combinacao:
ALTER SESSION SET NLS_SORT=BINARY_CI;
ALTER SESSION SET NLS_COMP=LINGUISTIC;Para uma documentacao completa sobre toda a parte de nls acesso o link:
http://download-east.oracle.com/docs/cd … m#NLSPG005[]
12 de fevereiro de 2007 às 3:36 pm #78704santosclayParticipanteOlá Duarte blz!!!
Então cara em uma mensagens que postei no forúm sobre o assunto tb coloquei um link relacionado ao assunto, onde este tb continha os mesmos comandos postados por tí.
Porém o Wendel postou no forúm que ele estava utilizando o ORA 9 e não o 10.Eu dei uma lida na documentação do ORA 9 (postei um link sobre o assunto no tópico) e cheguei a conclusão que o procedimento executado pelo Wendel estava correto, mas não estava funcionado. Não achei uma maneira de lhé repassar uma solução via alteração de parâmetros de sessão. O Wendel deve ter solucionado a questão na linha de código mesmo, como alguns membros do forúm recomendaram.
Conversando com alguns amigos sobre assunto, alguns recomendaram que a especificação do encondig da SO fosse verificada, baseando-se em experiências passadas que os mesmo tiveram.
Realmente na teoria a sua posição esta correta, porém sou partidário da idéia que na prática, principalmente se tratando de linux algumas coisas estão fora da lei rs….
Abraços.
Clayton.
P.S. “Por favor não é minha intenção gerar polemica, a minha resposta tem dois objetivos:
1 – Justificar a minha recomendação, tendo em mente que posso errar e espero aprender muito com eles rs….
2 – Preservar a credibilidade do GPO perante seus usuários”.
“ -
AutorPosts
- Você deve fazer login para responder a este tópico.