Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle SQL:如果不是日期,如何列出字段?_Sql_Oracle - Fatal编程技术网

Oracle SQL:如果不是日期,如何列出字段?

Oracle SQL:如果不是日期,如何列出字段?,sql,oracle,Sql,Oracle,Oracle SQL:如果不是日期,如何列出字段 选择可乐、可乐、可乐、冷饮 从桌子上 哪里不是isdateColC 但是它给了我错误,我不确定如何重新调整它….您可以使用to_date在oracle中验证日期。编写一个函数,该函数将日期作为字符串和格式,并返回true或false: create or replace function isdate ( p_string in varchar2, p_fmt in varchar2 := null)

Oracle SQL:如果不是日期,如何列出字段

选择可乐、可乐、可乐、冷饮 从桌子上 哪里不是isdateColC


但是它给了我错误,我不确定如何重新调整它….

您可以使用to_date在oracle中验证日期。编写一个函数,该函数将日期作为字符串和格式,并返回true或false:

  create or replace function isdate
     ( p_string in varchar2,
         p_fmt in varchar2 := null)
          return varchar2
        as
            l_date date;
        begin
            l_date :=
         to_date(p_string,p_fmt);
         return 'TRUE';
       exception
           when others then
               return 'FALSE';
       end;

   select isdate('1 jan 2021','dd mm yyyy') IsValidDate from dual;
   select isdate('1 jan1 2021','dd mm yyyy')IsValidDate from dual;
输出:

您可以使用Oracle Database 12.2中引入的功能。您可以将VALIDATE_CONVERSION…=0以查找任何非日期的值

WITH
    sample_data
    AS
        (SELECT '2020-01-01' AS val FROM DUAL
         UNION ALL
         SELECT '2020-02-01' AS val FROM DUAL
         UNION ALL
         SELECT 'text' AS val FROM DUAL)
SELECT val, validate_conversion (val AS DATE, 'YYYY-MM-DD') AS isdate
  FROM sample_data;


          VAL    ISDATE
_____________ _________
2020-01-01            1
2020-02-01            1
text                  0

如果不使用动态SQL,则无法以这种方式控制选择列表本身。为什么不知道数据库表中列的类型?哦,列是日期格式的;我只是觉得对它运行一个快速的sql检查会很好。你能告诉我如何在动态sql中执行它吗?谢谢,列是varchar,您有日期格式的数据??如果是,那么列中日期字符串的格式是什么?数据库是什么版本?如何在SELECT查询的WHERE子句中使用isdate函数?