我在使用SQLite
特别是like
语句时遇到问题。我想从varchar
列由用户提供的字符列表组成的表中检索数据。
例如:
如果用户输入了awnxov
,我希望具有匹配这些字母的单词,例如可能在表中的won
和wax
。
最佳答案
从您的评论中,您想提供一个字母列表并找到所有匹配的单词。您不能使用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/