sql >> Databasteknik >  >> RDS >> Oracle

Hur man tar bort rätt stoppning på dagnamnet i Oracle

I Oracle Database, när du använder TO_CHAR() funktion för att returnera dagsnamnet från ett datum, utfyllnad kommer att läggas till i dagsnamnet om det är kortare än det längsta giltiga dagsnamnet för det givna språket och kalendern.

Tja, det är standardbeteendet. Du kan dock ändra detta om du vill.

För att undertrycka denna utfyllnad behöver du bara lägga till fm för formatelementet för dagnamnet. .

Exempel

Anta att vi kör följande kod:

SELECT 
    TO_CHAR(date '2030-03-08', 'Day, DD Month YYYY')
FROM DUAL;

Resultat:

Friday   , 08 March     2030

Vi kan se att efterföljande mellanslag har lagts till i dagnamnet och månadsnamnet.

Vi kan använda fm formatmodifierare för att dölja detta utrymme:

SELECT 
    TO_CHAR(date '2030-03-08', 'fmDay, DD Month YYYY')
FROM DUAL;

Resultat:

Friday   , 08 March     2030

Problem löst.

Lägg märke till att detta också hade sidofördelen att undertrycka de efterföljande mellanslagen från månadsnamnet.

Den undertryckte också den inledande nollan från dagnumret.

Vi kan använda flera fm modifierare för att vara mer specifik om vilken utfyllnad vi vill undertrycka. Varje fm i vårt format växlar modellen fyllningsläge på och av.

Anta att vi vill dämpa de efterföljande mellanrummen från dag- och månadsnamnen, men vi vill behålla den inledande nollan på dagnumret. I så fall kan vi göra följande:

SELECT 
    TO_CHAR(date '2030-03-08', 'fmDay, fmDD fmMonth YYYY')
FROM DUAL;

Resultat:

Friday   , 08 March     2030

Anledningen till att vi använde en tredje fm (framför MONTH ) beror på att den andra fm återaktiverade utfyllnad för alla efterföljande formatelement, vilket skulle resultera i att de efterföljande utrymmena behölls för månaden.

Så här menar jag:

SELECT 
    TO_CHAR(date '2030-03-08', 'fmDay, fmDD Month YYYY')
FROM DUAL;

Resultat:

Friday, 08 March     2030 

I det här fallet undertrycktes utfyllnad från dagnamnet och återaktiverades sedan för dagnummer, månad och år.

Lyckligtvis kan vi lägga till så många fm modifierare som vi behöver för att få önskat resultat.


  1. Hur kan jag lösa inkompatibla med sql_mode=only_full_group_by i laravel vältalig?

  2. Uppdatera alla rader i en kolumn till nytt värde

  3. Hur man förhindrar databaskorruption i Microsoft Access

  4. Disaster Recovery Planning för MySQL &MariaDB