sql >> Databasteknik >  >> RDS >> Oracle

LPAD() Funktion i Oracle

I Oracle, LPAD() funktionen låter dig fylla den vänstra delen av en sträng med ett visst tecken, till ett specificerat antal tecken.

Hur det fungerar är att du anger hur lång den resulterande strängen ska vara. Om originalsträngen är kortare fyller utfyllnadstecknet ut det återstående utrymmet.

Syntax

Syntaxen ser ut så här:

LPAD(expr1, n [, expr2 ])

Var:

  • expr1 och expr2 kan vara vilken som helst av datatyperna CHAR , VARCHAR2 , NCHAR , NVARCHAR2 , CLOB , eller NCLOB .
  • n är ett NUMBER heltal eller ett värde som implicit kan konverteras till ett NUMBER heltal.

Funktionen returnerar expr1 , vänsterstoppad till längden n tecken med teckensekvensen i expr2 .

Om expr2 är utelämnat, är utfyllnadstecknet ett enda blanksteg.

Exempel

Här är ett enkelt exempel att visa:

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

Resultat:

   LPAD('CAT',5) 
________________ 
  Cat           

Observera att numret som anges är den totala bredden på den resulterande strängen – inte mängden stoppning.

Här är den igen jämfört med den ursprungliga (icke vadderade) strängen:

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

Resultat:

   LPAD('CAT',5) 
________________ 
  Cat            
Cat             

Ange ett tecken

I det här exemplet anger jag ett tecken som ska användas för utfyllnad:

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

Resultat:

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

Utfyllning mindre än originalsträngen

Om det andra argumentet är mindre än den ursprungliga strängen läggs ingen utfyllnad till och den ursprungliga strängen förkortas till det angivna antalet tecken:

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

Resultat:

   LPAD('CAT',2) 
________________ 
Ca              

Databasexempel

Här är ett exempel på utfyllnad av den vänstra delen av värdena i en databaskolumn:

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

Resultat:

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

Nullvärden

Om något av argumenten är null resultatet är null :

SET NULL 'null';

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

Resultat:

   LPAD(NULL,3)    LPAD('CAT',NULL)    LPAD('CAT',3,NULL) 
_______________ ___________________ _____________________ 
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 LPAD() utan att skicka några argument returnerar ett fel:

SELECT LPAD()
FROM DUAL;

Resultat:

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:

Och att skicka fel antal argument resulterar i ett fel:

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

Resultat:

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. Hur lägger man till anpassade attribut till SQL-anslutningssträngen?

  2. Paketet har redan lagt upp 50 skålar. Visar inte mer

  3. Intervju med Oren Eini på RavenDB om databashantering, analys &säkerhet

  4. Behörighet nekades vid försök att importera en CSV-fil från PGAdmin