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)
TO_CHAR( SYSDATE, 'DAY' ) 返回一个固定长度的字符串,右边用空格填充.
所以:
SELECT '%' || TO_CHAR( SYSDATE, 'DAY' ) || '%' FROM DUAL;
Run Code Online (Sandbox Code Playgroud)
输出(对于我NLS_DATE_LANGUAGE和NLS_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)
| 归档时间: |
|
| 查看次数: |
55 次 |
| 最近记录: |