1
resposta

Select com AND

Na aula 4, atividade 6 é apresentado pelo professor o seguinte código SQL

SELECT * FROM TB_CLIENTES WHERE NOME >='FERNANDO CAVALCANTE'; 

Então é mostrado um NOME que inicia com "É", o professor explica que isso ocorre devido ao "É" ser maior do que F na tabela ASCII.

Eu fiz esse código:

SELECT * FROM TB_CLIENTES WHERE NOME >='FERNANDO CAVALCANTE' AND NOME <= 'Z'; 

Acredito ser uma forma mais prática e fácil de realmente filtrar estes campos sem utilizar algum parâmetro NLS como já citado em uma pergunta nesta aula, está correto ?

1 resposta

Olá Victor! Para mim a forma mais eficaz é usar a cláusula collate.

Como fazer buscar accent-insensitive

To ignore diacritics in comparisons, use an accent-insensitive collation. Oracle Database has a wide range of collations. These are of the form:

Use desse modo: {_(CI|AI)}

O sufixo vai determinar a regra de comparação: CI = case-insensitive, accent-sensitive => ignore case, ou seja, maiúsculas e minusculas. mas considera os caracteres especiais. AI = accent- and case-insensitive => ignora ambos, nesse caso 'É' = 'E' = 'e'

Tente seu exemplo assim:

SELECT * FROM TB_CLIENTES WHERE NOME >='FERNANDO CAVALCANTE' collate binary_ai ; 

Documentação Oracle: https://blogs.oracle.com/sql/post/how-to-do-case-insensitive-and-accent-insensitive-search-in-oracle-database#accent-insensitive