sql >> Databasteknik >  >> RDS >> Oracle

NLS_LOWER() Funktion i Oracle

I Oracle, NLS_LOWER() funktion returnerar sitt argument med alla bokstäver i gemener.

Det liknar LOWER() funktion, förutom att den accepterar ett andra argument som låter dig specificera sorteringen. Samlingen hanterar speciella språkliga krav för ärendekonverteringar.

Syntax

Syntaxen ser ut så här:

NLS_LOWER(char [, 'nlsparam' ])

Där båda char och 'nlsparam' kan vara av vilken som helst av datatyperna CHAR , VARCHAR2 , NCHAR , NVARCHAR2 , CLOB , eller NCLOB .

'nlsparam' argument kan ha följande form:

'NLS_SORT = sort'

Där sort är en namngiven kollation.

Om du utelämnar det här argumentet används den bestämda sorteringen av funktionen.

Exempel

Här är ett enkelt exempel att visa:

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

Resultat:

          RESULT 
________________ 
homer symptom   

Detsamma gäller när argumentet använder blandade versaler:

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

Resultat:

          RESULT 
________________ 
homer symptom   

Och om argumentet redan är gemener, är resultatet detsamma som indata:

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

Resultat:

          RESULT 
________________ 
homer symptom   

Ange en sortering

Här är ett exempel som visar hur angivande av en sortering kan ändra resultaten:

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

Resultat:

      R1       R2 
________ ________ 
baliq    balıq   

Lägg märke till att den andra kolumnen använder en prickfri gemen i tecken, som följer det azerbajdzjanska skriftsystemet.

Observera att NLS_SORT åsidosätter sammanställningen av det första argumentet endast vid tidpunkten för exekvering. Därför returnerar följande sats sammanställningen av det första argumentet, inte det andra:

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

Resultat:

        COLLATION 
_________________ 
USING_NLS_COMP   

Ämnet för sammanställningar kan vara ganska komplext. Se bilaga C i Oracle Database Globalization Support Guide för regler för bestämning av sortering och regler för sorteringshärledning för denna funktion.

Nullvärden

Skickar null returnerar 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 returnerar SQLcl och SQL*Plus ett tomt utrymme när null uppstår som ett resultat av en SQL SELECT påstående.

Du kan dock använda SET NULL för att ange en annan sträng som ska returneras. Här specificerade jag att strängen null bör returneras.

Inkorrekt antal argument

Anropar NLS_LOWER() utan att skicka några argument returnerar ett fel:

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:

Och att skicka för många argument resulterar i ett fel:

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. Vad är det korrekta indexet för att fråga strukturer i arrayer i Postgres jsonb?

  2. SQL Server Bulk Insert – Del 2

  3. Hur skapar man ett säkert mysql-förberedt uttalande i php?

  4. Rekommenderat sätt / beställning att läsa data från en webbtjänst, analysera den data och infoga den i en SQLite db