我用SQL语句select * from st_track_ct_ft_new where st_invoice_no = '13-T00S12-03M00' 在数据库中查看,执行结果中含有一条数据字段st_shop_id值为2419的记录,
但我将SQL语句增加条件为如下:
select * from st_track_ct_ft_new where st_invoice_no = '13-T00S12-03M00' and st_shop_id = 2419 则查询结果为空,
不知什么原因
但我将SQL语句增加条件为如下:
select * from st_track_ct_ft_new where st_invoice_no = '13-T00S12-03M00' and st_shop_id = 2419 则查询结果为空,
不知什么原因
/--试一下: select *
from st_track_ct_ft_new
where st_invoice_no = '13-T00S12-03M00'
and st_shop_id = '2419';
可以试一下
怀疑不可见字符
2)你的字段是number类型吗?
3) 是不是建有函数索引之类的东东,导致了oracle bug?
看你那個數據類型是什麼?
numeric肯定是沒有問題的,估計varchar或varchar2或char它後面有空格看不到的
所以用
select length(t_shop_id from st_track_ct_ft_new where st_invoice_no = '13-T00S12-03M00'
看它的度長是多少?
select length(t_shop_id) from st_track_ct_ft_new where st_invoice_no = '13-T00S12-03M00'
用下面的就可以了:
SELECT *
FROM ST_TRACK_CT_FT_NEW
WHERE ST_INVOICE_NO = '13-T00S12-03M00'
AND ST_SHOP_ID LIKE '%2419%';
我是这样处理的
select * from st_track_ct_ft_new where st_invoice_no = '13-T00S12-03M00' and trim(st_shop_id) = 2419;
或者按这样处理
SELECT *
FROM ST_TRACK_CT_FT_NEW
WHERE ST_INVOICE_NO = '13-T00S12-03M00'
AND ST_SHOP_ID LIKE '%2419'
最后一定可以的
该字段类型为integer类型,在查询时,输入条件 st_shop_id like '%2419%' 、to_number(st_shop_id) = 2419 ,这样都可以解决,创建一个相同结构的表,将数据迁移到新表,查询时输入st_shop_id = '2419' 都是可以了;初步怀疑是因为数据库刚还原到这个服务器,后来解决方法为,重建了一下这个字段的索引解决了问题,怀疑是索引的问题;供大家讨论。