我正试图从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');