我在db中有一些句子。我想选择那些没有网址的。
所以我要做的是
select ID, SENTENCE
from SENTENCE_TABLE
where regexp_like(SENTENCE, '[^http]');
但是,在执行查询后,出现在结果窗格中的句子仍然有 url。我尝试了很多其他组合,但都没有成功。有人可以解释或提供一个很好的链接,说明正则表达式在 SQL 中的实际工作方式。
如何使用 SQL 查询过滤(排除)数据库中的实际单词?
你把这件事复杂化了。只需使用标准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
而不是单独的字母。
[^http]
将匹配除h
or t
或 t
or p
之外的任何字符..所以这将匹配任何不包含h
or t
或 t
or p
字符串中任何位置的字符串
它应该是where not regexp_like(SENTENCE, '^http');
..这将匹配任何不以 http 开头的东西