使用 NOT LIKE IN 的 SQL 查询
请帮助我编写一个 SQL 查询,其条件为 NOT LIKE IN
。
SELECT *
FROM Table1
WHERE EmpPU NOT Like IN ('%CSE%', '%ECE%', '%EEE%');
上面的例子返回一个错误。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
您不能组合
LIKE
和IN
。下面的语句可以完成这项工作:
You cannot combine
LIKE
andIN
.The statement below would do the job though:
那是因为您将两种语法混合在一起。
如果您始终具有这三个值,则只需对三个 LIKE 表达式的结果进行 AND 运算即可。
如果您需要对“任意数量”的值执行此操作,则可以将这些值放入表中并进行联接。
或者...
That's because you're mixing two syntax together.
If you always have exactly those three values, you can just AND the results of three LIKE expressions.
If you need to do it for "any number" of values, you can put the values into a table and do a join.
OR...
如果您想要在特定列的搜索中包含/排除一组单词。您可能想使用mysql的正则表达式功能。
从列中排除单词集:
从列中搜索单词集:
If you have set of words which you want to include/exclude in search from a particular column. You may want to use regular expression function of mysql.
Exclude set of words from a column :
Search set of words from a column :
你不能将 LIKE 和 IN 结合起来,
你可以这样做:
但是如果你需要 % ,你不会从 % 通配符中受益,
唯一的选择是:
you cant combine LIKE and IN
you can do:
but you wont benefit from the % wildcard
if you need the % the only option is:
或者你可以这样做:
Or you can do it like this:
你可以试试这个
you can try this
代码如下:
Code is as below:
或者使用
EXCEPT
:Or use
EXCEPT
:您可以使用 SQL Server 的 STRING_SPLIT 并混合使用通配符。
You can use SQL Server's STRING_SPLIT and use a mix of wildcards.
这与其他示例类似,但使用 CTE 和 SQL Server 表值构造函数。参考文献:
这个是类似的使用
UNION
或STRING_SPLIT
示例,但当我更改匹配条件列表并且列表变得相当长时,我发现此语法稍微干净一些。您还可以将与
不同的v
CTE 连接到其他一些表,以实现更复杂的场景。This is similar to others examples but uses a CTE and a SQL Server table value constructor. References:
This is similar to using
UNION
or theSTRING_SPLIT
examples but I find this syntax slightly cleaner when I am changing the match conditions list and the list gets quite long. You could also join yourunlike
v
CTE to some other table for a more complex scenario.