如何使用 SQLite 中的字符列表匹配字符串
How to match a string using a list of characters in SQLite
我在使用 SQLite
时遇到问题,尤其是 like
语句。我想从 table 中检索数据,其中 varchar
列由用户给出的字符列表组成。
例如:
如果用户输入 awnxov
,我希望具有这些字母的词匹配,例如 won
和 wax
可能在我的 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。
这可能效果不佳。这很可能是对所有数据的扫描。根据有多少数据,以及您收到多少字母作为输入,您可能只想创建一个索引并搜索每两个字母组合,然后检查代码以查看它是否通过。
祝你好运
我在使用 SQLite
时遇到问题,尤其是 like
语句。我想从 table 中检索数据,其中 varchar
列由用户给出的字符列表组成。
例如:
如果用户输入 awnxov
,我希望具有这些字母的词匹配,例如 won
和 wax
可能在我的 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。
这可能效果不佳。这很可能是对所有数据的扫描。根据有多少数据,以及您收到多少字母作为输入,您可能只想创建一个索引并搜索每两个字母组合,然后检查代码以查看它是否通过。
祝你好运