回答

收藏

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

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

我正在尝试找到一种方法,如果可能的话,可以同时使用IN和LIKE。我要完成的工作是放置一个子查询,该子查询将数据列表上拉到IN语句中。问题在于数据列表包含通配符。有什么办法吗?
3 |9 a5 o; Y. {只是我好奇的事情。1 [4 M9 W5 [6 P4 h/ J
Example of data in the 2 tables
4 v7 p1 c" U' ?8 _9 e' EParent table
" ~; M0 E0 C6 l4 n4 c; W2 E5 ~# BID    Office_Code   Employee_Name
$ ]8 o& j& f' k4 \$ e" X& }( ~1     GG234         Tom& W; \" o7 w. v
2     GG654         Bill3 n8 w6 j/ D. W& ?
3     PQ123         Chris
8 `; o0 l/ K2 `" r5 ZSecond table
; ~4 G  R( W$ X( jID    Code_Wildcard
  g+ E+ `0 p  S1     GG%' |, _7 J* y7 s! }/ D
2     PQ%
1 u% P9 t' A2 v' f5 a
( D* S( n5 }& a- T4 j# g* Y6 v澄清说明(通过第三方)
  |( i3 r5 p) M# Z由于我看到了一些似乎无法解决Ziltoid提出的问题的答复,因此我想我尝试澄清一下我认为他的意思。
, e  t* K, M6 @/ o  w& S. l在SQL中,“ WHERE col IN (1,2,3)”大致等同于“ WHERE col = 1 OR col = 2 OR col = 3”。4 v% O: v) R8 O9 [8 d
他正在寻找我会伪编码为的东西2 {- }/ F" t) o5 D' M
WHERE col IN_LIKE ('A%', 'TH%E', '%C')
/ z2 M' k2 V3 C+ T/ q9 |. n这大约等于5 U. _" C5 a" W3 Q. N
WHERE col LIKE 'A%' OR col LIKE 'TH%E' OR col LIKE '%C'
& ?, Z' [; }* x  |% ]; l正则表达式的答案似乎最接近。其余的似乎超出了预期。3 A! Q3 ^7 @5 f9 t( y
                  o+ U* p$ x8 U; [( T4 S
解决方案:
* [1 E9 R9 m9 ]! A* d9 q                ) m& a* o2 X4 r  s0 U

: }& {5 _7 e/ K/ o) q" v8 h. t' A( D5 Y$ I5 p& {/ [
                我不确定您使用的是哪个数据库,但是使用Oracle,您可以通过在FROM子句中为子查询加上别名而不是在IN子句中使用别名来完成等效的工作。使用您的示例:
9 |1 r$ P1 s# u% G0 P. U! c* u! E$ nselect p.*2 @1 x& r& o5 U8 d* b2 P
from, E: l' e2 i8 T( T
  (select code_wildcard
0 ^0 B3 Q2 K0 K" _8 Y$ U- o4 I2 I   from second8 ?9 d" x7 H1 ]  k. F+ O/ H
   where id = 1) s0 b  n$ z4 ~% ?3 j8 G( i
  join parent p
" O6 L9 D/ m' e" C6 `% _      on p.office_code like s.code_wildcard
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则