Oracle 查询使用 like 子句和星期几来获取记录

Oracle query using like clause with current day of the week for a record

我在记录栏中有一个天数列表。我想使用 LIKE 关键字查询该列以查看它是否具有星期几。该记录包含例如:

INTV
-----------------------
monday,tuesday,wednesday

我想看看今天是否在 INTV。因此,如果今天是星期一,例如,我希望上面的行为 return.

如果我对星期几进行硬编码,它就可以工作。例如,... WHERE intv LIKE '%monday%'。但是,当我尝试使用 SYSDATE 添加当前日期并使用 to_char(sysdate, 'day') 获取日期时,它不起作用。

这是我迄今为止尝试过但没有成功的方法:

SELECT * FROM mytable where intv like '%' || to_char(sysdate, 'day') || '%';

SELECT * FROM mytable where intv like to_char(sysdate, 'day');

SELECT * FROM mytable where intv like to_char(sysdate, '%day%');

您必须使用正确的格式化参数,例如:

select to_char(sysdate,'DD') from dual;

将return当前日期的日值,只需访问http://www.sqlines.com/oracle-to-sql-server/to_char_datetime了解更多详情和其他参数。

看看这是否有帮助 -

SELECT * 
FROM mytable 
where intv like replace(to_char(sysdate, '%day%'),' ','');

TO_CHAR( SYSDATE, 'DAY' ) returns 一个固定长度的字符串,右填充空格。

所以:

SELECT '%' || TO_CHAR( SYSDATE, 'DAY' ) || '%' FROM DUAL;

输出(对于我的 NLS_DATE_LANGUAGENLS_TERRITORY 设置):

%MONDAY   %

相反,您想使用 FMDAY 格式模型来删除尾随空格(FM 是填充模式并禁止空白填充):

SELECT '%' || TO_CHAR( SYSDATE, 'FMDAY' ) || '%' FROM DUAL;

输出:

%MONDAY%