回答

收藏

有什么方法可以在SQL语句中将IN与LIKE结合起来?

技术问答 技术问答 311 人阅读 | 0 人回复 | 2023-09-14

我正在尝试找到一种方法,如果可能的话,可以同时使用IN和LIKE。我要完成的工作是放置一个子查询,该子查询将数据列表上拉到IN语句中。问题在于数据列表包含通配符。有什么办法吗?
6 S6 ~# @0 A/ W1 }/ }只是我好奇的事情。
: z4 H: q+ B; b" [Example of data in the 2 tables
; R8 G$ T4 o8 L' N/ CParent table5 V! U" J2 Y: E% o3 S
ID    Office_Code   Employee_Name. O  J, S( r4 D3 S$ D1 w4 }# l
1     GG234         Tom
- ~% i2 e( x0 n% ~, F2     GG654         Bill
+ f. i% S* Z8 z+ I3     PQ123         Chris) V5 J3 e% H- h; F$ M5 O+ O& C6 J
Second table) S( {& F" k* e" P
ID    Code_Wildcard* `2 v" {0 q. g6 U- K
1     GG%
# V$ A- O. v3 ?2 T& @0 M2     PQ%
0 N/ _7 U' G6 r/ u3 H
) O% b, b3 m2 G/ r+ h" ]% D澄清说明(通过第三方)
! a9 h0 T0 u% m" @  n1 ]: }) k由于我看到了一些似乎无法解决Ziltoid提出的问题的答复,因此我想我尝试澄清一下我认为他的意思。
. l6 a/ @9 Q, S/ ~8 I3 }/ p在SQL中,“ WHERE col IN (1,2,3)”大致等同于“ WHERE col = 1 OR col = 2 OR col = 3”。( i- W0 ~  g3 }; t- Y" w3 _* P
他正在寻找我会伪编码为的东西2 B( I2 E+ |/ _8 }
WHERE col IN_LIKE ('A%', 'TH%E', '%C')  _- ^+ l& e* F6 c
这大约等于+ E( @& d5 B2 S, V; J# T) H: W
WHERE col LIKE 'A%' OR col LIKE 'TH%E' OR col LIKE '%C'
6 b2 p6 W- M! e正则表达式的答案似乎最接近。其余的似乎超出了预期。
0 k9 ~) ^4 ]) F# `, H8 Y               
( H, n  o0 j+ w6 C7 {# J2 Y解决方案:
  L. i# Q+ u" x$ ]- D               
) C4 @( F4 j0 V3 k
1 e4 T8 t" e$ n: y4 T- l- [5 N3 v& }' N9 l5 h$ K) \  v
                我不确定您使用的是哪个数据库,但是使用Oracle,您可以通过在FROM子句中为子查询加上别名而不是在IN子句中使用别名来完成等效的工作。使用您的示例:6 M8 q) L/ t8 E( B$ W
select p.*
$ `; y4 D- Z  Q! r; `% L7 Tfrom7 _: w: T% T* P' ?4 J) N
  (select code_wildcard& T. `7 n" Z) y* [/ l  S. R/ g
   from second
  |- }- n% j" @7 Z   where id = 1) s
) s7 h$ x+ f$ g7 @7 ]/ V  p  join parent p
3 r: F. G; R% ]& V5 m8 o4 k; Q$ @      on p.office_code like s.code_wildcard
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则