一尘不染

如何在sqlite3的WHERE子句中添加多个“不喜欢'%?%'”?

sql

我有一个sqlite3查询,如:

SELECT word FROM table WHERE word NOT LIKE '%a%';

这将选择单词中不出现“ a”的所有单词。这使我可以完美地工作。问题是,如果我想进一步限制结果,使其在单词中的任何地方都不包含“ b”。我在想像这样的东西。

SELECT word FROM table WHERE word NOT IN ('%a%', '%b%', '%z%');

这显然行不通,但这是个主意。AND我试图避免仅添加一个子句:

SELECT word FROM table WHERE word NOT LIKE '%a%' AND NOT LIKE '%b%';

如果这是唯一的选择,那么我将不得不使用它,但是我希望有其他选择。


阅读 122

收藏
2021-03-17

共1个答案

一尘不染

如果您使用Sqlite的REGEXP支持(有关如何执行regexp
python和sqlite的问题,
请参见问题的答案),则可以在一个子句中轻松完成此操作:

SELECT word FROM table WHERE word NOT REGEXP '[abc]';
2021-03-17