oracle查询字段在where中无效

当我使用如下语句的时候没有任何问题,可以查询出2条数据

 SELECT 
       dd_isShare,
       'aaa' ledger_id,
       'FK01' coa_type_code

  from v_cem_voucher_detail 
 where md_id = 'BI2017120700072938'
   and (instr('@(N)', '@(' || dd_isShare || ')') > 0 AND
       instr('@(SY2017090700059015)', '@(' || dd_invoiceType || ')') = 0)

但是当我使用如下语句:

SELECT 
       --dd_isShare,
       'aaa' ledger_id,
       'FK01' coa_type_code

  from v_cem_voucher_detail 
 where md_id = 'BI2017120700072938'
   and (instr('@(N)', '@(' || dd_isShare || ')') > 0 AND
       instr('@(SY2017090700059015)', '@(' || dd_invoiceType || ')') = 0) 

把dd_isShare和dd_invoiceType中2个字段在select注释掉,就查询不到任何数据,v_cem_voucher_detail 是一个视图,而且该情况在生产上出现,测试服务器上没有问题,个人觉得很奇怪,已经排除是语句或者视图的问题,剩下的不知道还有什么情况?

其中dd_isShare 是一个子查询的转换(decode((select count(1) from t_aaa_es es where d.no = es.connno and d.mainid = es.mainid and d.corpid = d.corpid),0,'N','Y')) dd_isShare,

求解答

我也没遇到过,可以尝试参考一下以下:
原因:
1. 判断生产数据是否存在?
2. 改成多行注释/* comment */试试;
3. 去掉这两个注释掉的字段,再查看试试;
排查一下

where条件中的字段必须在select中,否则where不生效

不要使用注释在试一下

测试环境可以,生产不可以,明显是环境问题啊。把这个sql语句拆分,一个条件一个条件的增加的查询。很容易定位啊。

赞同一楼。。。。。。。。。。。。。。。。

判断生产数据是否存在?