查询意外未返回任何行



我正试图从Siebel的S_CONTACT表中返回一个手机号码列表,其中的值包含数字以外的任何内容。

我使用的查询是:

select cell_ph_num 
from s_contact
where regexp_replace(cell_ph_num, '0|1|2|3|4|5|6|7|8|9', '') <> ''

但我没有得到任何结果。

但是,当我运行以下查询时:

select regexp_replace(cell_ph_num, '0|1|2|3|4|5|6|7|8|9', '') from s_contact

我得到了很多结果。

这些结果与"不等于空字符串"子句不匹配吗?

''是oracle中的NULL。。所以它必须是IS NOT NULL

select cell_ph_num 
from s_contact
where regexp_replace(cell_ph_num, '0|1|2|3|4|5|6|7|8|9', '') IS NOT NULL

或者我们可以通过POSIX类以这种方式使用REGEXP_LIKE

 WHERE REGEXP_LIKE (cell_ph_num,'[^[:DIGIT:]]');

ORPerl风格的POSIX等效

 WHERE REGEXP_LIKE (cell_ph_num,'D');

相关内容

  • 没有找到相关文章

最新更新