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

Regulární výraz určitého formátu data

To je špatný nápad. jediné způsob, jak ověřit, že datum je správné, je pokusit se jej převést na datum. Pokud se převod nezdaří, není to datum; pokud bude úspěšná, pak možná být. Data jsou příliš složitá na to, aby je běžný jazyk analyzoval.

Vytvořte tedy funkci, která jej převede na datum; můžete vytvořit, pokud je mnohem obecnější, než máte zde, takže jej lze znovu použít pro jiné účely:

create or replace function validate_date (
     PDate in varchar2
   , PDateFormat in varchar2
     ) return date is
begin
   return to_date(PDate, PDateFormat);
exception when others then
   return null;
end;

To vrátí datum, pokud je možné ověřit, že se datum a formát data shodují, jinak vrátí NULL, pokud dojde k nějaké chybě. Váš dotaz se poté změní na:

select 'P' from dual where validate_date('20140506', 'yyyymmdd') is not null


  1. Chyba porovnání PL/SQL ve spouštěči (PLS-00405)

  2. Závodní podmínka mezi SELECT a INSERT pro více sloupců

  3. CodeIgniter - Číslo chyby:1146 (Tabulka po provedení příkazu CREATE TABLE neexistuje)

  4. Jak přesunout sloupce v tabulce MySQL?