有什么方法可以在SQL语句中将IN与LIKE结合起来?
技术问答
312 人阅读
|
0 人回复
|
2023-09-14
|
我正在尝试找到一种方法,如果可能的话,可以同时使用IN和LIKE。我要完成的工作是放置一个子查询,该子查询将数据列表上拉到IN语句中。问题在于数据列表包含通配符。有什么办法吗?
6 H0 j1 ~7 L5 C8 h: @只是我好奇的事情。. y% o5 A/ r3 U$ t) W- w1 |% h
Example of data in the 2 tables
0 w0 C M# I) ~Parent table
5 y) B! b- v$ _# e, rID Office_Code Employee_Name8 i G" }& C/ v3 f: {$ j
1 GG234 Tom
6 v. S! ?& P' M0 M% s2 GG654 Bill+ L8 U* }. e! h" A% z; j' _0 y
3 PQ123 Chris. ?. Z; N7 t2 _: g( }/ i
Second table
+ ~6 P! p. J! N% K( NID Code_Wildcard0 K$ b; |! N3 G) J
1 GG%
! X; w- T! ~& j9 [3 [! r# ~2 b5 f2 PQ%
+ x6 K- Y! o! @4 G) g5 c, m" G! T: a* E( A% q
澄清说明(通过第三方)
! ?7 h- B0 P0 x3 Q. {% D由于我看到了一些似乎无法解决Ziltoid提出的问题的答复,因此我想我尝试澄清一下我认为他的意思。
* |, T6 ], M T0 U2 H在SQL中,“ WHERE col IN (1,2,3)”大致等同于“ WHERE col = 1 OR col = 2 OR col = 3”。 n8 Z3 T8 G% Q6 R( E! [6 P
他正在寻找我会伪编码为的东西. F! @0 y) h9 v7 k2 r2 M
WHERE col IN_LIKE ('A%', 'TH%E', '%C')2 Q7 U* l5 x8 P! u) D) | i
这大约等于0 y) t6 \ v& w, J- w% B
WHERE col LIKE 'A%' OR col LIKE 'TH%E' OR col LIKE '%C'$ V! F" G5 ^3 J+ S F7 `
正则表达式的答案似乎最接近。其余的似乎超出了预期。
j- a1 r1 O! _0 S4 X3 r 2 N: x) ]7 B- u+ \
解决方案:
/ Q+ _$ B- W/ U% a v/ ?* v ! k& i2 Z0 O( a3 I' f. d! @3 {
0 t) N- [& V. {4 x, D. \
& |4 m* f. O! D L 我不确定您使用的是哪个数据库,但是使用Oracle,您可以通过在FROM子句中为子查询加上别名而不是在IN子句中使用别名来完成等效的工作。使用您的示例:2 b5 z( D/ p& C# t
select p.*4 O6 w9 {! T K7 k: B
from
& i9 p: \* V8 O2 t (select code_wildcard
$ ^6 b! I+ p6 T from second
8 T8 J8 \2 P9 }$ G where id = 1) s% r9 C4 f; ^ j* Z4 }" i
join parent p% a0 k3 P, c& q! }7 [- O6 f
on p.office_code like s.code_wildcard |
|
|
|
|
|