有什么方法可以在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 |
|
|
|
|
|