我试图找到一种方法,如果可能的话,一起使用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%
澄清说明(通过第三方)
由于我看到几个回答似乎没有解决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')
这大致相当于
WHERE col LIKE 'A%' OR col LIKE 'TH%E' OR col LIKE '%C'
正则表达式的答案似乎最接近; 其余的看起来很不合适.
我不确定您正在使用哪个数据库,但是使用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
在MySQL
,使用REGEXP
:
WHERE field1 REGEXP('(value1)|(value2)|(value3)')
同样在Oracle
:
WHERE REGEXP_LIKE(field1, '(value1)|(value2)|(value3)')