sql >> Database >  >> RDS >> Oracle

LPAD() Functie in Oracle

In Oracle, de LPAD() functie stelt u in staat om het linkergedeelte van een tekenreeks met een bepaald teken op te vullen tot een bepaald aantal tekens.

De manier waarop het werkt, is dat u specificeert hoe lang de resulterende string moet zijn. Als de oorspronkelijke tekenreeks korter is, vult het opvulteken de resterende ruimte op.

Syntaxis

De syntaxis gaat als volgt:

LPAD(expr1, n [, expr2 ])

Waar:

  • expr1 en expr2 kan elk van de gegevenstypen zijn CHAR , VARCHAR2 , NCHAR , NVARCHAR2 , CLOB , of NCLOB .
  • n is een NUMBER geheel getal of een waarde die impliciet kan worden geconverteerd naar een NUMBER geheel getal.

De functie retourneert expr1 , links opgevuld tot lengte n tekens met de reeks tekens in expr2 .

Als expr2 wordt weggelaten, is het opvulteken een enkele spatie.

Voorbeeld

Hier is een eenvoudig voorbeeld om te demonstreren:

SELECT LPAD('Cat', 5)
FROM DUAL;

Resultaat:

   LPAD('CAT',5) 
________________ 
  Cat           

Merk op dat het opgegeven getal de totale breedte is van de resulterende string – niet de hoeveelheid opvulling.

Hier is het weer in vergelijking met de originele (niet-opgevulde) snaar:

SELECT LPAD('Cat', 5)
FROM DUAL
UNION ALL
SELECT 'Cat'
FROM DUAL;

Resultaat:

   LPAD('CAT',5) 
________________ 
  Cat            
Cat             

Geef een karakter op

In dit voorbeeld specificeer ik een teken om te gebruiken voor de opvulling:

SELECT LPAD('Cat', 5, '>')
FROM DUAL;

Resultaat:

   LPAD('CAT',5,'>') 
____________________ 
>>Cat               

Opvulling kleiner dan de originele string

Als het tweede argument kleiner is dan de oorspronkelijke tekenreeks, wordt er geen opvulling toegevoegd en wordt de oorspronkelijke tekenreeks ingekort tot het opgegeven aantal tekens:

SELECT LPAD('Cat', 2)
FROM DUAL;

Resultaat:

   LPAD('CAT',2) 
________________ 
Ca              

Databasevoorbeeld

Hier is een voorbeeld van het opvullen van het linkerdeel van de waarden in een databasekolom:

SELECT 
    country_name,
    LPAD(country_name, 12, '.') AS Padded
FROM countries
FETCH FIRST 5 ROWS ONLY;

Resultaat:

   COUNTRY_NAME          PADDED 
_______________ _______________ 
Argentina       ...Argentina    
Australia       ...Australia    
Belgium         .....Belgium    
Brazil          ......Brazil    
Canada          ......Canada    

Null-waarden

Als een van de argumenten null . is het resultaat is null :

SET NULL 'null';

SELECT 
    LPAD(null, 3),
    LPAD('Cat', null),
    LPAD('Cat', 3, null)
FROM DUAL;

Resultaat:

   LPAD(NULL,3)    LPAD('CAT',NULL)    LPAD('CAT',3,NULL) 
_______________ ___________________ _____________________ 
null            null                null                  

Standaard retourneren SQLcl en SQL*Plus een spatie wanneer null treedt op als resultaat van een SQL SELECT uitspraak.

U kunt echter SET NULL . gebruiken om een ​​andere tekenreeks op te geven die moet worden geretourneerd. Hier heb ik gespecificeerd dat de string null moet worden geretourneerd.

Onjuist aantal argumenten

LPAD() . aanroepen zonder het doorgeven van argumenten geeft een fout:

SELECT LPAD()
FROM DUAL;

Resultaat:

Error starting at line : 1 in command -
SELECT LPAD()
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:

En het doorgeven van het verkeerde aantal argumenten resulteert in een fout:

SELECT LPAD('Cat', 1, '>', 2)
FROM DUAL;

Resultaat:

Error starting at line : 1 in command -
SELECT LPAD('Cat', 1, '>', 2)
FROM DUAL
Error at Command Line : 1 Column : 28
Error report -
SQL Error: ORA-00939: too many arguments for function
00939. 00000 -  "too many arguments for function"
*Cause:    
*Action:

  1. Database importeren/exporteren met SQL Server Server Management Studio

  2. Hoe kan ik SQL schrijven voor een tabel die dezelfde naam heeft als een beveiligd sleutelwoord in MySql?

  3. Wat is een opmaakstring in SQL Server?

  4. 4 manieren om dubbele rijen te selecteren in PostgreSQL