regex - 如何在SQLite中使用字符列表匹配字符串

标签 regex sqlite sql-like

我在使用SQLite特别是like语句时遇到问题。我想从varchar列由用户提供的字符列表组成的表中检索数据。

例如:

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

最佳答案

从您的评论中,您想提供一个字母列表并找到所有匹配的单词。您不能使用LIKE执行此操作。

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

如果您使用的是Ubuntu:

sudo apt-get install sqlite3-pcre


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

然后,在运行sqlite时,需要执行以加载regexp()函数:

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


(或lib在哪里)

最后,您可以执行以下操作:

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


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

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

祝好运

关于regex - 如何在SQLite中使用字符列表匹配字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30413143/

相关文章:

javascript - REGEX - 在括号之后获取数据直到结束括号

正则表达式仅匹配字母数字、连字符、下划线和句点,没有重复的标点符号

python-3.x - 如何在python中将变量插入到sqlite数据库中?

mysql - 将日期时间与字符串进行比较时非法混合排序规则

php - 带有 LIKE 返回错误行的 MySQL

sql - 对全表的子集进行操作时 LIKE 查询的性能影响

python - 提取字符串中出现的百分比

regex - JMeter 代理排除模式仍在记录中

ios - SQLITE奇怪的时间戳和IOS

android - SQLite 更新返回受影响的行数,但数据未更新