【发布时间】:2016-10-19 11:08:52
【问题描述】:
我的问题与one 非常相似:从具有 A 列和 B 列的表中删除所有行,其中一些记录包含非数字字符(看起来像“1234#5”或“1bbbb”)。但是,我阅读的解决方案似乎对我不起作用。例如,
SELECT count(*) FROM tbl
--962060;
SELECT count(*)
FROM tbl
WHERE (REGEXP_like(A,'[^0-9]') OR REGEXP_like(B,'[^0-9]') ) ;
--17
SELECT count(*)
FROM tbl
WHERE (REGEXP_like(A,'[0-9]') and REGEXP_like(B,'[0-9]') )
;
--962060
从第三个查询中,我希望看到 (962060-17)=962043。为什么还是962060?像这样的alternative 查询也给出了相同的答案:
SELECT count(*)
FROM tbl
WHERE (REGEXP_like(A,'[[:digit:]]')and REGEXP_like(B,'[[:digit:]]') )
;
--962060
当然,我可以通过 query1 减去 query2 来绕过这个问题,但是我想学习如何使用正则表达式来做到这一点。
【问题讨论】:
-
像
'AB0'这样的字符串会同时满足这两个条件。