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_LANGUAGE
和 NLS_TERRITORY
设置):
%MONDAY %
相反,您想使用 FMDAY
格式模型来删除尾随空格(FM
是填充模式并禁止空白填充):
SELECT '%' || TO_CHAR( SYSDATE, 'FMDAY' ) || '%' FROM DUAL;
输出:
%MONDAY%
我在记录栏中有一个天数列表。我想使用 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_LANGUAGE
和 NLS_TERRITORY
设置):
%MONDAY %
相反,您想使用 FMDAY
格式模型来删除尾随空格(FM
是填充模式并禁止空白填充):
SELECT '%' || TO_CHAR( SYSDATE, 'FMDAY' ) || '%' FROM DUAL;
输出:
%MONDAY%