- Este tópico contém 8 respostas, 3 vozes e foi atualizado pela última vez 18 anos atrás por Marcio68Almeida.
-
AutorPosts
-
9 de janeiro de 2007 às 8:22 pm #78016WendelParticipante
Olá!
Como todos sabem o Oracle diferencia Letras Maiusculas de Minusculas.
Tenho uma aplicação que faz pesquisa na Base de dados, mas o usuário quer que aceite para inserção da expressao de busca tanto letras maisculas como minusculas, independente do que esteja na Base de dados. Alguem sabe alguma configuração que deixe o oracle ficar igual no Access.
Sei que tem o comando Upper, ´mas é que dai vou ter que mexer no código inteiro. Alguem sabe outra alternativa. ValeuWendel
9 de janeiro de 2007 às 8:40 pm #78020chduarteParticipanteVamos la no exemplo:
SQL> create table test_sort (f varchar2(50));
SQL> insert into test_sort values (‘&valor’);
Valor teste 1
vAlOr Teste 2
VALOR teste 3SQL> select *
from test_sort
where f like ‘Valor%’;F
Valor teste 1
SQL> alter session set nls_comp=’LINGUISTIC’;
SQL> alter session set NLS_SORT=’BINARY_CI’;SQL> select *
from test_sort
where f like ‘Valor%’;F
Valor teste 1
vAlOr Teste 2
VALOR teste 3[]
9 de janeiro de 2007 às 8:43 pm #78022chduarteParticipanteEsqueci de mencionar que voce tambem pode utilizar indices de Oracle text mas ai teria que alterar a aplicacao. Neste caso suas consultas vicam mais complexas.
Com o Oracle Text voce pode indexar documentos Word, Excel, PDF ate imagens e videos e pesquisar textos dentro destes documentos por nivel de relevancia e score.
[]
11 de janeiro de 2007 às 3:21 pm #78106WendelParticipanteOlá,
Testei as duas alterações de session passadas e não funcionam. Será que é a versão??
Tirei a aspas, coloquei e nada, o erro que dá é esse.SQL> ALTER SESSION SET NLS_SORT=BINARY_CI;
ERROR:
ORA-12705: valor inválido ou desconhecido do parâmetro NLS especificadoO oracle que uso é o 9i. Alguem tem alguma dica do que posso fazer??
OBRIGADO
WENDEL11 de janeiro de 2007 às 3:32 pm #78108chduarteParticipanteTenta somente :
SQL> alter session set NLS_SORT=’BINARY’;[]
11 de janeiro de 2007 às 4:17 pm #78112WendelParticipanteNão estou com sorte, mas não vou desistir…rs.
Teste o comando:
SQL> alter session set NLS_SORT=’BINARY’a sessão foi alterada mas não retornou as 3 linhas do teste. somente a linha:
Valor teste 1
Tentei também uns parametros deste FAQ:
http://www.orafaq.com/forum/t/73009/2/
SQL> alter session set nls_comp = ANSI;
Session altered.SQL> alter session set nls_sort = GENERIC_BASELETTER;
Session altered.
Mas também só retornou uma linha.
Tentei também:
SQL> alter session set NLS_COMP=’BINARY’mas também só retornou uma linha da consulta.
Você sabe mais alguma forma de tornar Case Insensitive as consultas?
WENDEL
11 de janeiro de 2007 às 4:33 pm #78114chduarteParticipanteAlgo estranho. Esta é a forma documentada de fazer este tipo de consulta. Segue um pedaco da documentacao:
“Performing a Generic Base Letter Search
You can perform a search that ignores case and diacritics. Enter the following statements:
ALTER SESSION SET NLS_COMP=ANSI;
ALTER SESSION SET NLS_SORT=GENERIC_BASELETTER;Then enter a statement similar to the following:
SELECT * FROM emp WHERE ename=’miller’;
This statement can now return names that include the following:
Miller
MILLER
Millér”Existem mais registros na sua tabela correto?
[]
11 de janeiro de 2007 às 4:55 pm #78116WendelParticipanteCONSEGUI…
Usei os ultimos comandos..
SQL> alter session set nls_comp = ANSI;SQL> alter session set nls_sort = GENERIC_BASELETTER;
Não funcionou para a tabela Test_Sort que criei.. mas para outras tabelas do banco funcionou. exemplo do teste que fiz.
SQL> SELECT * FROM AREA;
CD_AREA SL_ DS_AREA
1 INF Informática 2 LOG Logistica 3 CRE Corporate Real State 4 IMV Administração de Imóveis 5 DIR Diretoria 6 IT Information Tecnology 7 COB Cobrança 8 SEG Segurança 9 AST ASSET 10 CSU CSU 11 MKT MARKETING
SQL> SELECT * FROM AREA WHERE DS_AREA= ‘mARketinG’;
CD_AREA SL_ DS_AREA
11 MKT MARKETING
Obrigado.
11 de janeiro de 2007 às 5:02 pm #78118Marcio68AlmeidaParticipanteFiz o seguinte teste baseado nas informações de nosso colega..
Conectado a:
Oracle9i Release 9.2.0.6.0 - Production
JServer Release 9.2.0.6.0 - ProductionSQL> create table teste (nome varchar2 (50));
SQL> insert into teste values ('MarciO');
SQL> insert into teste values ('MaRcIo');
SQL> insert into teste values ('mArCiO');
SQL> insert into teste values ('márCiO');SQL> commit;
SQL> ALTER SESSION SET NLS_COMP=ANSI;
SQL> ALTER SESSION SET NLS_SORT=GENERIC_BASELETTER;SQL> Select * from teste where nome = 'marcio';
NOME
MarciO
MaRcIo
mArCiO
márCiO
ao que tudo indica, funciona perfeitamente, inclusive com acentuação… 😀 -
AutorPosts
- Você deve fazer login para responder a este tópico.