.comment-link {margin-left:.6em;}

Sunday, April 09, 2006

Ignore Cases (e acentos)

Já vi várias dúvidas sobre fazer busca em um campo desconsiderando se o valor está em minúsculo ou maísculo. Com a versão 9ir2 (9.2.0) já é possível alterando parâmetros de globalização na sessão.


Connected to:
Oracle9i Enterprise Edition Release 9.2.0.6.0 - Production
With the Partitioning and Oracle Data Mining options
JServer Release 9.2.0.6.0 - Production

SQL> create table t ( x varchar2(20) );

Table created.

SQL> insert into t values ( 'Marcio' );

1 row created.

SQL> insert into t values ( 'MARCIO' );

1 row created.

SQL> insert into t values ( 'MárCio' );

1 row created.

SQL> commit;

Commit complete.

SQL> select * from t where x = 'marcio';

no rows selected

SQL> alter session set nls_comp=ansi;

Session altered.

SQL> alter session set nls_sort=generic_baseletter;

Session altered.

SQL> select * from t where x = 'marcio';

X
--------------------
Marcio
MARCIO
MárCio

3 rows selected.

Comments:
Obrigado pela resposta Marcio!
 
A solução por completo vem apenas no Oracle 10g. A solução mostrada funciona com o operador (=) Igual, mas não funciona com o LIKE.

[]s,
Anderson Haertel Rodrigues
 
Anderson,

O artigo fala sobre equalidade não equivalência ;-) mesmo assim voce pode contar com o operador ">" invés de "like" no 9i.

SQL> select * from t where x > 'mar';

X
--------------------
Marcio
MARCIO
MarCio

3 rows selected.
 
Hum...boa dica! Irei realizar uns testes por aqui.
 
Post a Comment



<< Home

This page is powered by Blogger. Isn't yours?