sql >> Database >  >> RDS >> Oracle

REGEXP_COUNT hoofdlettergevoeligheid negeren

Uitvoeren:

SELECT *
FROM   NLS_SESSION_PARAMETERS
WHERE  parameter IN ( 'NLS_COMP', 'NLS_SORT' );

En kijk welke NLS-sessieparameters u gebruikt.

Bijvoorbeeld:

ALTER SESSION SET NLS_COMP=BINARY;
ALTER SESSION SET NLS_SORT=BINARY;
SELECT regexp_count('OOO', '[a-z0-9]', 1, 'c' ) AS COUNT_AZ,
       regexp_count('OOO', '[[:lower:][:digit:]]', 1, 'c' ) AS count_lower
FROM   DUAL;

Uitgangen:

Maar:

ALTER SESSION SET NLS_COMP=ANSI;
ALTER SESSION SET NLS_SORT=GERMAN_AI;
-- or ALTER SESSION SET NLS_SORT=GERMAN_CI;
-- or ALTER SESSION SET NLS_SORT=FRENCH_CI;
-- or many others
SELECT regexp_count('OOO', '[a-z0-9]', 1, 'c' ) AS COUNT_AZ,
       regexp_count('OOO', '[[:lower:][:digit:]]', 1, 'c' ) AS count_lower
FROM   DUAL;

Uitgangen:

Om dit op te lossen, kunt u:

  • Wijzig de NLS_SORT sessieparameter.
  • Of (zoals vermeld door @AlexPoole) gebruik de [:lower:] POSIX-tekenset in plaats van a-z .

db<>fiddle hier




  1. Hoe u alle weergaven in Oracle Database kunt weergeven

  2. Total-Order By Date uitvoeren in SQLite

  3. Hoe een CSV-bestandsgegevens efficiënt in MYSQL in te voegen met Python?

  4. Vraag om de klant te vinden met het hoogste aantal totale aankopen