Oracle查询使用like子句与当前星期几的记录

myh*_*use 0 sql oracle oracle10g oracle11g

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

INTV
-----------------------
monday,tuesday,wednesday
Run Code Online (Sandbox Code Playgroud)

我想看看当天是否在INTV.因此,如果今天是星期一,我希望上面的行返回.

如果我硬编码一周中的某一天,它就可以了.例如,... 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%');
Run Code Online (Sandbox Code Playgroud)

MT0*_*MT0 5

TO_CHAR( SYSDATE, 'DAY' ) 返回一个固定长度的字符串,右边用空格填充.

所以:

SELECT '%' || TO_CHAR( SYSDATE, 'DAY' ) || '%' FROM DUAL;
Run Code Online (Sandbox Code Playgroud)

输出(对于我NLS_DATE_LANGUAGENLS_TERRITORY设置):

%MONDAY   %
Run Code Online (Sandbox Code Playgroud)

相反,您希望使用FMDAY格式模型来删除尾随空格(FM填充模式并抑制空白填充):

SELECT '%' || TO_CHAR( SYSDATE, 'FMDAY' ) || '%' FROM DUAL;
Run Code Online (Sandbox Code Playgroud)

哪个输出:

%MONDAY%
Run Code Online (Sandbox Code Playgroud)