【发布时间】:2015-01-22 15:55:46
【问题描述】:
我正在尝试在oracle 11g中使用regexp_like()来实现文本搜索。
例如,我有一个名为 posts 的表,如果我有值,则在标题列中
'How to create a new post with pictures and videos'
'How to create a new post enter code here'
如果我写一个查询
select * from posts where regexp_like(title, '.*pictures.*|.*how.*|.*post.*', 'i')
它返回具有两个标题的记录,其中第二个值没有单词图片。我知道它是因为我用户'|'在表达式中。
我想要实现的是它应该返回记录只有当所有单词都以任何顺序出现在列中时。请帮助我使用正则表达式
【问题讨论】:
-
您尝试使用单个
regexp_like,而不是每个搜索词一个? -
是的。我想用一个表达式来做。
-
" 我想用一个表达式来做。" 你不能。除非通过生成包含所有单词组合的正则表达式 - 或者通过某种方式对正则表达式和列数据中的单词进行排序。对于可以通过使用
AND加入多个子句来解决的问题,两者似乎都过于复杂。如果您对此确实有严格的限制,则应查看其他评论中建议的 Oracle 文本。
标签: sql regex oracle oracle11g full-text-search