Oracle SQL:如果不是日期,如何列出字段?
Oracle SQL:如果不是日期,如何列出字段 选择可乐、可乐、可乐、冷饮 从桌子上 哪里不是isdateColCOracle 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)
但是它给了我错误,我不确定如何重新调整它….您可以使用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函数?