如何解决SQL where var in list 语句使用 like
我正在努力寻找以下问题的解决方案:
假设我有一个数据库表,TABLE
像这样(它实际上有 800 000 行)
Avtal AvtalsOmråde Fordon
0 E32 Ekerö 156950
1 E32 Ekerö 156951
2 E32 Ekerö 156952
3 E32 Ekerö 156953
4 E32 Ekerö 156954
5 E32 Ekerö 156955
6 E32 Ekerö 156956
7 E32 Ekerö 156957
8 E32 Ekerö 156958
9 E32 Ekerö 156959
10 E32 Ekerö 156960
11 E32 Ekerö 156961
12 E32 Ekerö 156962
13 E32 Ekerö 156963
14 E32 Ekerö 156964
15 E32 Ekerö 156965
16 E32 Ekerö 156966
17 E32 Ekerö 157001
18 E32 Ekerö 157002
19 E32 Ekerö 157003
20 E32 Ekerö 157004
21 E32 Ekerö 157005
22 E32 Ekerö 157006
23 E32 Ekerö 157185
24 E32 Ekerö 157200
25 E32 Ekerö 157201
26 E32 Ekerö 157202
27 E32 Ekerö 157203
28 E32 Ekerö 157204
29 E32 Ekerö 157205
30 E32 Ekerö 157206
31 E32 Ekerö 157222
32 E32 Ekerö 157223
33 E32 Ekerö 157224
34 E32 Ekerö 157225
35 E32 Ekerö 157226
36 E32 Ekerö 157300
37 E32 Ekerö 157301
38 E32 Ekerö 157302
39 E32 Ekerö 157500
40 E32 Ekerö 157571
假设我想找到一个特定的 Fordon
,比如 157300,但我只知道该标识符的最后一部分 (7300)。那么
Select *
from TABLE as T
where T.Fordon like '%7300%'
成功并返回
36 E32 Ekerö 157300
现在,假设我有一个包含 Fordon
-identifiers (7300,3435,0032,.....)
的 200 部分的列表(总是有 Fordon
-identifier 的最后 4 位数字)。我找不到完全相同的方法。我知道我需要使用 OR
来执行此操作,但我不知道如何执行此操作。
另一种方法是返回变量 Fordon
具有最后四位数字的所有行,如列表的四位数字。
解决方法
另一种方法是,获取您的 Fordon 号码的最后 4 位数字,并尝试将其与您拥有的列表进行匹配:
Select *
from TABLE as T
where RIGHT(T.Fordon,4) in (7300,3435,0032,.....)
,
如果 Fordon 是一个整数(或其他一些数字类型),为什么不试试数学呢?如果是最后四位数字,那么您应该可以计算模数 10,000。在你的情况下:
SELECT * FROM TABLE AS T WHERE T.Fordon%10000 IN (7300,.....);
,
试试 substring
和 in
:
select *
from TABLE as T
where substring(T.Fordon,3,4) in ('7300','3435','0032')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。