在SQL中(遗憾的是)LIKE由于数据库违反了几乎所有规范化规则,因此经常不得不使用" "条件.我现在无法改变它.但这与这个问题无关.
此外,我经常使用条件,例如WHERE something in (1,1,2,3,5,8,13,21)更好的可读性和SQL语句的灵活性.
在没有编写复杂的子选择的情况下,有没有可能将这两种方法结合起来?
我想要一些简单WHERE something LIKE ('bla%', '%foo%', 'batz%')而不是这样的东西:
WHERE something LIKE 'bla%'
OR something LIKE '%foo%'
OR something LIKE 'batz%'
我在这里使用SQl Server和Oracle,但我很感兴趣,如果在任何RDBMS中都可以这样做.
我有一个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%';
如果这是唯一的选择,那么我将不得不使用它,但我希望有别的东西.