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