我在db中有一些句子。我想选择那些没有网址的网站。
所以我做的是
select ID, SENTENCE
from SENTENCE_TABLE
where regexp_like(SENTENCE, '[^http]');
但是,在执行查询后,结果窗格中显示的句子仍然具有URL。我尝试了很多其他组合而没有任何成功。 有人可以解释或提供良好的链接,其中解释了regexp在SQL中的实际工作方式。
如何使用SQL查询过滤(排除)db中的实际单词?
答案 0 :(得分:4)
你过于复杂了。只需使用标准LIKE。
select ID, SENTENCE
from SENTENCE_TABLE
where SENTENCE not like '%http%';
regexp_like(SENTENCE, '[^http]')
将匹配所有但 h,t和p分别匹配。我喜欢Oracle中正则表达式的PSOUG page,但我也建议阅读the documentation。
要回复您的评论,可以使用REGEXP_LIKE,这一点毫无意义。
select ID, SENTENCE
from SENTENCE_TABLE
where not regexp_like(SENTENCE, 'http');
这会查找字符串http
而不是单独的字母。
答案 1 :(得分:3)
[^http]
会匹配除h
或 t
或 t
或 p
..因此,这将匹配任何不包含h
或 t
或 {{1}的字符串或 t
字符串
它应该是p
..这将匹配任何不以http