sql >> Databasteknik >  >> RDS >> Oracle

Accent och skiftlägesokänslig sortering i Oracle med LIKE

en metod skulle vara att ändra dina sessionsparametrar NLS_SORT och 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 visas i en annan SO kan du inte använda LIKE-operatorn med NLSSORT (detta beror på att NLSSORT returnerar en sträng med byte som kommer att användas för sortering, och LIKE fungerar bara med teckensträngar)

Uppdatering: Samtidigt som att ställa in NLS-parametrarna skulle vara mitt första val, kan du också använda inbyggda funktioner för att uppnå samma resultat. Ett par exempel:

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. Oracle LIMIT n,m ekvivalent

  2. Vad är @@TEXTSIZE i SQL Server?

  3. Hur man säkerhetskopierar MySQL-databaser med hjälp av cron-jobb

  4. Oracle SQL-sats utvärderingsordning