sql >> Databáze >  >> RDS >> Oracle

Jak odstranit úvodní nuly z dat v Oracle

V databázi Oracle můžete použít fm (režim výplně) modifikátor formátu pro potlačení jakýchkoli úvodních nul, které by mohly být aplikovány na datum. Tento modifikátor formátu potlačuje výplň, která obsahuje úvodní nuly a koncové mezery.

Chcete-li použít fm modifikátor formátu, zahrňte jej do modelu formátu při určování způsobu formátování dat. Například při použití TO_CHAR() k formátování dat nebo v parametrech NLS, jako je NLS_DATE_FORMAT při nastavování formátu data pro vaši aktuální relaci.

Příklad

Zde je příklad k demonstraci:

SELECT 
    TO_CHAR(DATE '2009-08-01', 'DD-MM-YY') AS "Without fm",
    TO_CHAR(DATE '2009-08-01', 'fmDD-MM-YY') AS "With fm"
FROM DUAL;

Výsledek:

   Without fm    With fm 
_____________ __________ 
01-08-09      1-8-9     

Vidíme, že původní výsledek (bez fm modifikátor) vrací úvodní nuly pro všechny části data. V tomto případě fm modifikátor potlačil úvodní nulu ve všech třech částech data.

fm modifikátor ovlivní výsledek pouze tehdy, pokud jsou ve výsledku skutečně úvodní nuly.

Zde je datum, které obsahuje části data, které zabírají dvě číslice, a proto nemají úvodní nuly:

SELECT 
    TO_CHAR(DATE '2029-12-01', 'DD-MM-YY') AS "Without fm",
    TO_CHAR(DATE '2029-12-01', 'fmDD-MM-YY') AS "With fm"
FROM DUAL;

Výsledek:

   Without fm    With fm 
_____________ __________ 
01-12-29      1-12-29    

Jak určit režim vyplnění pouze u některých částí data

Výše uvedený příklad potlačil úvodní nulu na všech částech data. Ze dne, měsíce a roku byla odstraněna úvodní nula. Je to proto, že když umístíme jeden fm na začátku formátovacího modelu potlačí vše následné úvodní nuly ve výsledku.

Předpokládejme, že chceme pouze odstranit úvodní nulu ze dne a měsíce, ale zachovat ji v roce. V tomto případě můžeme provést následující:

SELECT TO_CHAR(DATE '2009-08-01', 'fmDD-MM-fmYY')
FROM DUAL;

Výsledek:

1-8-09

fm modifikátor v podstatě funguje jako přepínač. Když zahrnete jedničku, potlačí nuly až do konce, nebo dokud nenarazí na další fm modifikátor. Pokud existuje druhý fm modifikátor, pak nejsou úvodní nuly za tímto bodem potlačeny a tak dále.

Zde je to, co se stane, když zahrneme tři fm modifikátory – jeden před každou částí data:

SELECT TO_CHAR(DATE '2009-08-01', 'fmDD-fmMM-fmYY')
FROM DUAL;

Výsledek:

1-08-9

Takže v tomto případě fm modifikátor byl v zásadě povolen, poté zakázán a poté znovu povolen.

Parametry NLS

Můžete také zadat režim plnění v parametrech NLS, jako je NLS_DATE_FORMAT parametr při nastavování formátu data pro vaši aktuální relaci.

Příklad:

ALTER SESSION SET NLS_DATE_FORMAT = 'fmDD-MM-fmRR';

SELECT DATE '2009-08-07' FROM DUAL;

Výsledek:

7-8-09

  1. Použití primárního klíče s WithoutRowID

  2. Vraťte seskupený seznam s výskyty pomocí Rails a PostgreSQL

  3. Připojení Oracle k SQL Serveru z Windows

  4. Čtyři způsoby použití aplikace Microsoft Access