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

NLS_LOWER() Funktion i Oracle

I Oracle er NLS_LOWER() funktion returnerer sit argument med alle bogstaver med små bogstaver.

Det ligner LOWER() funktion, bortset fra at den accepterer et andet argument, der giver dig mulighed for at angive sorteringen. Samlingen håndterer særlige sproglige krav til sagskonverteringer.

Syntaks

Syntaksen ser sådan ud:

NLS_LOWER(char [, 'nlsparam' ])

Hvor både char og 'nlsparam' kan være af enhver af datatyperne CHAR , VARCHAR2 , NCHAR , NVARCHAR2 , CLOB eller NCLOB .

'nlsparam' argument kan have følgende form:

'NLS_SORT = sort'

Hvor sort er en navngivet kollation.

Hvis du udelader dette argument, bruges den bestemte sammenstilling af funktionen.

Eksempel

Her er et simpelt eksempel til at demonstrere:

SELECT NLS_LOWER('HOMER SYMPTOM') AS Result
FROM DUAL;

Resultat:

          RESULT 
________________ 
homer symptom   

Det samme gælder, når argumentet bruger blandet store og små bogstaver:

SELECT NLS_LOWER('Homer Symptom') AS Result
FROM DUAL;

Resultat:

          RESULT 
________________ 
homer symptom   

Og hvis argumentet allerede er små bogstaver, så er resultatet det samme som inputtet:

SELECT NLS_LOWER('homer symptom') AS Result
FROM DUAL;

Resultat:

          RESULT 
________________ 
homer symptom   

Angiv en sortering

Her er et eksempel, der viser, hvordan angivelse af en sortering kan ændre resultaterne:

SELECT 
    NLS_LOWER('BALIQ') AS r1,
    NLS_LOWER('BALIQ', 'NLS_SORT = XAZERBAIJANI') AS r2
FROM DUAL;

Resultat:

      R1       R2 
________ ________ 
baliq    balıq   

Bemærk, at den anden kolonne bruger en prikfri lille i karakter, som overholder det aserbajdsjanske skriftsystem.

Bemærk, at NLS_SORT tilsidesætter sammenstillingen af ​​det første argument kun på tidspunktet for udførelsen. Derfor returnerer følgende sætning sammenstillingen af ​​det første argument, ikke det andet:

SELECT
    COLLATION(NLS_LOWER('BALIQ', 'NLS_SORT = XAZERBAIJANI')) AS Collation
FROM DUAL;

Resultat:

        COLLATION 
_________________ 
USING_NLS_COMP   

Emnet for sammenstillinger kan være ret komplekst. Se appendiks C i Oracle Database Globalization Support Guide for reglerne for sorteringsbestemmelse og regler for udledning af sortering for denne funktion.

Nul-værdier

Sender null returnerer null :

SELECT
    NLS_LOWER(null, 'NLS_SORT = XAZERBAIJANI') AS r1,
    NLS_LOWER('BALIQ', null) AS r2,
    NLS_LOWER(null, null) AS r3
FROM DUAL;

Resultat:

     R1      R2      R3 
_______ _______ _______ 
null    null    null   

Som standard returnerer SQLcl og SQL*Plus et tomt mellemrum, når null opstår som et resultat af en SQL SELECT udmelding.

Du kan dog bruge SET NULL for at angive en anden streng, der skal returneres. Her specificerede jeg, at strengen null skal returneres.

Forkert antal argumenter

Kalder NLS_LOWER() uden at sende nogen argumenter returnerer en fejl:

SELECT NLS_LOWER()
FROM DUAL;

Resultat:

Error starting at line : 1 in command -
SELECT NLS_LOWER()
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00938: not enough arguments for function
00938. 00000 -  "not enough arguments for function"
*Cause:    
*Action:

Og at sende for mange argumenter resulterer i en fejl:

SELECT NLS_LOWER('Homer', 'NLS_SORT = XAZERBAIJANI', 'Symptom')
FROM DUAL;

Resultat:

Error starting at line : 1 in command -
SELECT NLS_LOWER('Homer', 'NLS_SORT = XAZERBAIJANI', 'Symptom')
FROM DUAL
Error at Command Line : 1 Column : 54
Error report -
SQL Error: ORA-00939: too many arguments for function
00939. 00000 -  "too many arguments for function"
*Cause:    
*Action:

  1. Blanding af eksplicitte og implicitte joinforbindelser mislykkes med Der er en post for tabel ... men den kan ikke refereres fra denne del af forespørgslen

  2. Kan en sql-servertabel have to identitetskolonner?

  3. Forskellen mellem CTE og SubQuery?

  4. Hvordan bruger man COUNT i SQL?