I Oracle Database, når du bruger TO_CHAR()
funktion til at returnere dagsnavnet fra en dato, vil udfyldning blive tilføjet til dagsnavnet, hvis det er kortere end det længste gyldige dagnavn for det givne sprog og kalender.
Nå, det er standardadfærden. Du kan dog ændre dette, hvis du ønsker det.
For at undertrykke denne polstring er alt, hvad du skal gøre, at sætte fm
foran dagsnavnsformatelementet .
Eksempel
Antag, at vi kører følgende kode:
SELECT
TO_CHAR(date '2030-03-08', 'Day, DD Month YYYY')
FROM DUAL;
Resultat:
Friday , 08 March 2030
Vi kan se, at efterfølgende mellemrum er blevet tilføjet til dagsnavnet og månedsnavnet.
Vi kan bruge fm
formatmodifikator for at undertrykke dette mellemrum:
SELECT
TO_CHAR(date '2030-03-08', 'fmDay, DD Month YYYY')
FROM DUAL;
Resultat:
Friday , 08 March 2030
Problem løst.
Bemærk, at dette også havde den sidegevinst, at det undertrykkede de efterfølgende mellemrum fra månedens navn.
Det undertrykte også det indledende nul fra dagnummeret.
Vi kan bruge flere fm
modifikatorer for at være mere specifik om, hvilken polstring vi ønsker at undertrykke. Hver fm
i vores format skifter model udfyldningstilstand til og fra.
Antag, at vi ønsker at undertrykke de efterfølgende mellemrum fra dag- og månedsnavnene, men vi ønsker at beholde det indledende nul på dagnummeret. I så fald kan vi gøre følgende:
SELECT
TO_CHAR(date '2030-03-08', 'fmDay, fmDD fmMonth YYYY')
FROM DUAL;
Resultat:
Friday , 08 March 2030
Grunden til at vi brugte en tredje fm
(foran MONTH
) er fordi den anden fm
genaktiverede polstring for alle efterfølgende formatelementer, hvilket ville resultere i, at de efterfølgende mellemrum blev bibeholdt for måneden.
Her er hvad jeg mener:
SELECT
TO_CHAR(date '2030-03-08', 'fmDay, fmDD Month YYYY')
FROM DUAL;
Resultat:
Friday, 08 March 2030
I dette tilfælde blev udfyldning undertrykt fra dagsnavnet og derefter genaktiveret for dagnummer, måned og år.
Heldigvis kan vi tilføje lige så mange fm
modifikatorer, som vi har brug for for at få det ønskede resultat.