sql >> Database teknologi >  >> RDS >> Oracle

Accent- og store og små bogstaver i Oracle med LIKE

en metode ville være at ændre dine sessionsparametre NLS_SORT og NLS_COMP :

SQL> SELECT Name FROM CollationTestTable WHERE NAME LIKE '%pe%';

NAME
--------------------------------------------------------------------------------
pepe

SQL> alter session set nls_sort=Latin_AI;

Session altered

SQL> alter session set nls_comp=linguistic;

Session altered

SQL> SELECT Name FROM CollationTestTable WHERE NAME LIKE '%pe%';

NAME
--------------------------------------------------------------------------------
pepe
pépé
PEPE

Som vist i en anden SO, kan du ikke bruge LIKE operatoren med NLSSORT (dette skyldes, at NLSSORT returnerer en streng af bytes, der vil blive brugt til sortering, og LIKE virker kun med tegnstrenge)

Opdatering: Selvom indstilling af NLS-parametrene ville være mit første valg, kan du også bruge indbyggede funktioner for at opnå det samme resultat. Et par eksempler:

SQL> SELECT Name
  2    FROM CollationTestTable
  3   WHERE upper(convert(NAME, 'US7ASCII'))
  4         LIKE upper(convert('%pe%', 'US7ASCII'));

NAME
--------------------------------------------------------------------------------
pepe
pépé
PEPE

SQL> SELECT Name
  2    FROM CollationTestTable
  3   WHERE upper(translate(NAME, 'àâéèêìîòôùûÿ', 'aaeeeiioouuy'))
  4         LIKE upper(translate('%pe%', 'àâéèêìîòôùûÿ', 'aaeeeiioouuy'));

NAME
-----------------------------------
pepe
pépé
PEPE



  1. Sådan finder og maskerer du PII i Elasticsearch

  2. De mest almindelige PostgreSQL-fejlscenarier

  3. Django modellerer en fremmednøgle til mange borde

  4. Sådan eksporteres Oracle-forespørgselsresultater til en JSON-fil, når du bruger SQLcl