有什么方法可以在SQL语句中将IN与LIKE结合起来?
技术问答
267 人阅读
|
0 人回复
|
2023-09-14
|
我正在尝试找到一种方法,如果可能的话,可以同时使用IN和LIKE。我要完成的工作是放置一个子查询,该子查询将数据列表上拉到IN语句中。问题在于数据列表包含通配符。有什么办法吗?
1 ^* F+ I! q) ]+ j8 r7 `, _0 S3 z只是我好奇的事情。 Z% D& G. ~; r! y @
Example of data in the 2 tables9 H& b% j3 E0 T: `! T
Parent table
4 H2 d# |5 A& c; f6 a' K9 w5 C9 zID Office_Code Employee_Name
8 n' @6 K% c$ V- y1 x& z1 GG234 Tom
# M+ f: n* e2 A6 C9 H! M1 i2 GG654 Bill1 E) ]1 u; z1 n" B1 U+ N
3 PQ123 Chris) [2 h. I4 s9 N2 y ^( u$ X1 i+ H
Second table& C# \3 U0 a, r; @( q) I$ _
ID Code_Wildcard; v& k4 @+ L9 D% c2 r# E( e
1 GG%
3 w( y8 F9 E4 R- Q* {6 U2 PQ%
/ c' H1 J1 ^+ [+ ~
1 e G" C- E/ j" S澄清说明(通过第三方)
! p3 q; `2 l) S3 r C, W4 ]7 D由于我看到了一些似乎无法解决Ziltoid提出的问题的答复,因此我想我尝试澄清一下我认为他的意思。
& W! V4 G3 k5 j在SQL中,“ WHERE col IN (1,2,3)”大致等同于“ WHERE col = 1 OR col = 2 OR col = 3”。
* u, Y' D3 w) S! u* l% ]7 s他正在寻找我会伪编码为的东西* `+ ?/ }5 O: _" D
WHERE col IN_LIKE ('A%', 'TH%E', '%C')
) M/ [: c# L9 a- @这大约等于
/ O ?/ ]9 q+ ]5 k7 P* N WHERE col LIKE 'A%' OR col LIKE 'TH%E' OR col LIKE '%C': }' k/ ^( B: ~0 i3 _
正则表达式的答案似乎最接近。其余的似乎超出了预期。
6 A+ B2 I1 o# T7 f% @$ `
) X& f3 f) d% @0 w( E9 q- A解决方案:. I3 R5 ^$ _" h4 E
- E/ n( \4 K T- _3 U" v' w3 V9 R6 O
9 P2 ?$ d& Z/ f* T6 j, j 我不确定您使用的是哪个数据库,但是使用Oracle,您可以通过在FROM子句中为子查询加上别名而不是在IN子句中使用别名来完成等效的工作。使用您的示例:$ _4 ^3 ^4 {& @' }3 o
select p.*& N2 Z6 n7 }# t- }, W
from1 H/ w+ M- c N9 l( K( |: m
(select code_wildcard
5 o7 X( F% N% R+ \6 r: W8 c5 ~ from second+ r& R. _$ j, T% r: ]
where id = 1) s5 c! B3 L, z) g, s4 U
join parent p
* d! b |" E2 x; |% \ t/ _ on p.office_code like s.code_wildcard |
|
|
|
|
|