使用正则表达式进行 SQLite 查询

Jed*_*edi 2 java regex sqlite

我正在使用 Java,我得到了一个 db、SQLite 3.8.5、2 列ID(int key)note(string). 我希望能够查询包含多个单词的所有笔记。

示例: Note1:“你好,这部电影是 foo”
Note2:“你好,这部电影是黄色的”
Note3:“你好,foo 这部电影是”(尤达,不要输入!)
给定用户过滤词:“foo” “电影”

查询结果应为注 1 和注 2。

这个正则表达式有效,但我似乎无法找到如何将正则表达式作为查询询问: .*(?=.*movie)(?=.*foo).*

BR

Axe*_*ler 6

除了上面的答案,Java 中的解决方案,为了完整性。您必须为 REGEXP 运算符应该工作的每个连接执行此操作。

// Create regexp() function to make the REGEXP operator available
Function.create(connection, "REGEXP", new Function() {
  @Override
  protected void xFunc() throws SQLException {
    String expression = value_text(0);
    String value = value_text(1);
    if (value == null)
      value = "";

    Pattern pattern=Pattern.compile(expression);
    result(pattern.matcher(value).find() ? 1 : 0);
  }
});
Run Code Online (Sandbox Code Playgroud)