Sql 在where子句中使用to_char

Sql 在where子句中使用to_char,sql,oracle,Sql,Oracle,我有一个名为room_allocation的表,希望提取1月份被录取者的详细信息。因此,我使用了以下查询: select * from room_allocation where to_char(adm_date,'Month')='January '; 其输出为: 没有找到任何数据 但当我把它作为: select to_char(adm_date,'Month') from room_allocation; 我得到的输出是: TO_CHAR(ADM_DATE,'MONTH') Octob

我有一个名为room_allocation的表,希望提取1月份被录取者的详细信息。因此,我使用了以下查询:

select * from room_allocation where to_char(adm_date,'Month')='January ';
其输出为:

没有找到任何数据

但当我把它作为:

select to_char(adm_date,'Month') from room_allocation;
我得到的输出是:

TO_CHAR(ADM_DATE,'MONTH') 
October  
November  
December  
January  
所以请告诉我为什么它在第一种情况下不起作用。
谢谢。

也许是你一月底的额外空间

select * from room_allocation where to_char(adm_date,'Month')='January ';

删除该选项,然后再试一次

可能是1月底的额外空间

select * from room_allocation where to_char(adm_date,'Month')='January ';

删除该选项并重试

使用格式修改器
FM
。这将删除尾随空间

SELECT * 
FROM room_allocation 
WHERE to_char(adm_date,'FMMonth')='January';

使用格式修改器
FM
。这将删除尾随空间

SELECT * 
FROM room_allocation 
WHERE to_char(adm_date,'FMMonth')='January';

因为
'janur'
的值与
'janur'
的值不同,使用
提取(从adm_日期算起的月份)=1更好,因为根据NLS设置,一月名称可能不同,因为
'janur'
的值与
'janur'
的值不同,使用
提取的位置更好(自行政日起的月份)=1
因为根据NLS设置,一月名称可能会有所不同。我可以知道向下投票的原因吗?嗨,问题不在于空格,而在于尾随空格。谢谢你的建议。我可以知道向下投票的原因吗?嗨,问题不在于空格,而在于尾随空格。谢谢It’谢谢你的建议。非常感谢……它起作用了。非常感谢……它起作用了。。