如何使用 SQLite 中的字符列表匹配字符串

How to match a string using a list of characters in SQLite

我在使用 SQLite 时遇到问题,尤其是 like 语句。我想从 table 中检索数据,其中 varchar 列由用户给出的字符列表组成。

例如:

如果用户输入 awnxov,我希望具有这些字母的词匹配,例如 wonwax 可能在我的 table 中。

根据您的评论,您想提供一个字母列表并找到所有匹配的单词。您不能使用 LIKE.

执行此操作

但是,您可以使用 REGEXP。但要使用它,您需要安装正则表达式库或编写自己的正则表达式函数并提供回调。

如果您正在使用 Ubuntu:

sudo apt-get install sqlite3-pcre

或者您可以从 github 页面安装 here

那么当你运行sqlite时,你需要执行加载regexp()函数:

.load /usr/lib/sqlite3/pcre.so

(或库所在的任何地方)

最后你可以这样做:

SELECT word
FROM   table
WHERE  word REGEXP '^[awnxov]+$'

或您认为匹配的任何其他 PCRE。

这可能效果不佳。这很可能是对所有数据的扫描。根据有多少数据,以及您收到多少字母作为输入,您可能只想创建一个索引并搜索每两个字母组合,然后检查代码以查看它是否通过。

祝你好运