如何在SQLite查询中使用正则表达式?

144

我想在sqlite中使用正则表达式,但是不知道怎么做。

我的表格有一个列,其中包含像这样的字符串:“3,12,13,14,19,28,32”。 现在,如果我输入“where x LIKE '3'”,我也会得到包含值13或32之类的行, 但是我只想得到具有该字符串中确切值3的行。

有人知道如何解决这个问题吗?


2
这个答案是在C#中为SQLite添加REGEXP函数的最佳方法 https://dev59.com/d2Af5IYBdhLWcg3w0Vi7#26155359 - hubaishan
21个回答

0

我发现安装 REGEXP 扩展最简单的方法是使用 sqlpkg-cli

适用于 Linux、MacOS 和 Windows。

(非官方)SQLite 包管理器

sqlpkg 管理 SQLite 扩展,就像 pip 管理 Python 包或 brew 管理 macOS 程序一样。

它主要与 SQLite 包注册表 一起使用,但不仅限于此。您可以从 GitHub 仓库或其他网站安装 SQLite 扩展。您只需要一个包规范文件...

安装 cli:

curl -sS https://beta.webi.sh/sqlpkg | sh

安装扩展:

sqlpkg install nalgeon/regexp

加载扩展(MacOS、NodeJS):

import Database from "better-sqlite3";
const db = new Database('path/to/db');
try {
  db.loadExtension('/Users/<username>/.sqlpkg/nalgeon/regexp/regexp.dylib');
} catch (err) {
  console.error('Failed to load extension:', err);
}


运行一个正则表达式查询(NodeJS示例):
const query = `SELECT * from table
               WHERE column REGEXP 'include|these|strings'
               AND column NOT REGEXP 'but|not|others'`;

const query = db.prepare(queryString);

const results = query.all();


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接