0

我在db中有一些句子。我想选择那些没有网址的。

所以我要做的是

select ID, SENTENCE
from SENTENCE_TABLE
where regexp_like(SENTENCE, '[^http]');

但是,在执行查询后,出现在结果窗格中的句子仍然有 url。我尝试了很多其他组合,但都没有成功。有人可以解释或提供一个很好的链接,说明正则表达式在 SQL 中的实际工作方式。

如何使用 SQL 查询过滤(排除)数据库中的实际单词?

4

2 回答 2

4

你把这件事复杂化了。只需使用标准LIKE

select ID, SENTENCE
  from SENTENCE_TABLE
  where SENTENCE not like '%http%';

regexp_like(SENTENCE, '[^http]')将分别匹配h、t 和 p 之外的所有内容。我喜欢Oracle 中正则表达式的PSOUG 页面,但我也建议阅读文档

要回复您的评论,您可以使用 REGEXP_LIKE,没有意义。

select ID, SENTENCE
  from SENTENCE_TABLE
 where not regexp_like(SENTENCE, 'http');

这将查找字符串http而不是单独的字母。

于 2013-02-28T11:50:31.837 回答
3

[^http]将匹配除h or t t or p之外的任何字符..所以这将匹配任何不包含h or t t or p字符串中任何位置的字符串

它应该是where not regexp_like(SENTENCE, '^http');..这将匹配任何不以 http 开头的东西

于 2013-02-28T11:43:04.823 回答