我试图找到一种方法,如果可能的话,一起使用IN和LIKE.我想要完成的是放置一个子查询,将一个数据列表提取到一个IN语句中.问题是包含通配符的数据列表.有没有办法做到这一点?
只是我很好奇的东西.
Example of data in the 2 tables
Parent table
ID Office_Code Employee_Name
1 GG234 Tom
2 GG654 Bill
3 PQ123 Chris
Second table
ID Code_Wildcard
1 GG%
2 PQ%
Run Code Online (Sandbox Code Playgroud)
澄清说明(通过第三方)
由于我看到几个回答似乎没有解决Ziltoid所要求的问题,我想我会尝试澄清我认为他的意思.
在SQL中," WHERE col IN (1,2,3)"大致相当于" WHERE col = 1 OR col = 2 OR col = 3".
他正在寻找我伪编码的东西
WHERE col IN_LIKE ('A%', 'TH%E', '%C')
Run Code Online (Sandbox Code Playgroud)
这大致相当于
WHERE col LIKE 'A%' OR col LIKE 'TH%E' OR col LIKE '%C'
Run Code Online (Sandbox Code Playgroud)
正则表达式的答案似乎最接近; 其余的看起来很不合适.
小智 8
我不确定您正在使用哪个数据库,但是使用Oracle,您可以通过在FROM子句中对子查询进行别名而不是在IN子句中使用它来完成相同的操作.使用你的例子:
select p.*
from
(select code_wildcard
from second
where id = 1) s
join parent p
on p.office_code like s.code_wildcard
Run Code Online (Sandbox Code Playgroud)
在MySQL,使用REGEXP:
WHERE field1 REGEXP('(value1)|(value2)|(value3)')
Run Code Online (Sandbox Code Playgroud)
同样在Oracle:
WHERE REGEXP_LIKE(field1, '(value1)|(value2)|(value3)')
Run Code Online (Sandbox Code Playgroud)