带substr的Oracle选择查询

带substr的Oracle选择查询,oracle,select,oracle10g,substr,Oracle,Select,Oracle10g,Substr,我有一张桌子,看起来像: DAYDATE TIMEOFDAY USERID 18-JUL-12 Afternoon mistu4u 18-JUL-12 Noon mistu4u 20-JUL-12 Noon mistu4u 21-JUL-12 Afternoon mistu4u 11-SEP-12 Afternoon rimo 06-AUG-12 Noon rimo 14-JUN-12 Noon

我有一张桌子,看起来像:

DAYDATE     TIMEOFDAY   USERID
18-JUL-12   Afternoon   mistu4u
18-JUL-12   Noon        mistu4u
20-JUL-12   Noon        mistu4u
21-JUL-12   Afternoon   mistu4u
11-SEP-12   Afternoon   rimo
06-AUG-12   Noon        rimo
14-JUN-12   Noon        mistu4u
现在我想为daydate的月份为'jul'的mistu4u获取这些值

select * from mealdb where userid='mistu4u' and substr(daydate,4,3)='jul';

但它给出的是“找不到数据”。

您的安装区分大小写吗?这个SQL有效吗

select * from mealdb where userid='mistu4u' and substr(daydate,4,3)='JUL';
试一试

试一试

如果daydate列上有任何索引,请小心。substr将使其无效。也许,考虑用一个中间代替。< /P> 此外,大多数解决方案都会在任何一年的7月份获取所有记录。

尝试以下方法:

select * from mealdb where userid='mistu4u' and daydate like '%JUL%';

任何人也可以建议,如果同样可以通过“喜欢”关键字实现!!
DAYDATE
的数据类型是什么?你想要任何一年的七月?daydate的数据类型是varchar2I。我刚刚解决了它。我的安装区分大小写。这就是造成问题的原因。谢谢!!天啊!!它是!!它刚刚起作用了!!但我确实想让它不区分大小写。@你能告诉我如何做到这一点吗?你也能建议如何用“LIKE”来写它。@Subir Adhikari-这是可以做到的。检查
TRUNC(daydate, 'MONTH') = '01-JULY-2012'
select * from mealdb where userid='mistu4u' and daydate like '%JUL%';
select *
from mealdb
where userid='mistu4u'
and upper(daydate) LIKE '%JUL%';