IF (To_Char(Date1,'Day') = 'Sunday' Or To_Char(Date2,'Day') = 'Sunday') Then
SELECT columns ... FROM Table_Name;
ELSE
SELECT columns ... FROM Table_Name;
这不起作用!
答案 0 :(得分:2)
由于您未在格式模型中使用format model modifier,fm
,因此“无效”。因为您没有使用格式模型修饰符,所以星期几用右边填充空格为9个字符(最长星期三的长度)。这反过来意味着你的平等测试是不正确的。
要修复它,请使用格式模型修饰符:
to_char(date1, 'fmDay')
您可以运行此查询以演示问题和解决方案:
with a_week as (
select sysdate - level as dy
from dual
connect by level <= 7 )
select dy
, to_char(dy, 'Day')
, length(to_char(dy, 'Day'))
, to_char(dy, 'fmDay')
, length(to_char(dy, 'fmDay'))
from a_week
说过我不会打扰。为什么你需要输入一整天?改为使用DY
格式模型:
if to_char(date1,'DY') = 'SUN' or to_char(date2,'DY') = 'SUN' then
...
这总是三个字符。
关于调试的一个简短说明。如果您知道第一个IF语句未正确执行,我将遵循以下阶段: