查询意外返回没有行

时间:2014-09-02 15:20:55

标签: oracle siebel

我正在尝试从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

我得到了很多结果。

这些结果是否与“不等于空字符串”条款不匹配?

1 个答案:

答案 0 :(得分:3)

oracle中的{p> ''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

或者我们可以REGEXP_LIKE

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

Perl 样式POSIX等效

 WHERE REGEXP_LIKE (cell_ph_num,'\D');