我知道如何强力解决这个问题;我主要是在寻找一个优雅的解决方案来增加我自己对未来的了解。
我有一个包含 20 个代码标志字段的数据表。(CODE_01, CODE_02, CODE_03, ..., CODE_20)
我正在寻找任何这些代码列包含某些值(例如:11、12、24、141 等)的记录
我可以这样做:
Select * from table
where CODE_01 IN (11, 12, 24, 141)
or CODE_02 IN (11, 12, 24, 141)
or ...
or CODE_20 IN (11, 12, 24, 141);
或者像这样:
Select * from table
where 11 IN (CODE_01, CODE_02, ..., CODE_20)
or 12 IN (CODE_01, CODE_02, ..., CODE_20)
or 24 IN (CODE_01, CODE_02, ..., CODE_20)
or 141 IN (CODE_01, CODE_02, ..., CODE_20);
两者都有效,只是复制/粘贴的练习。我想知道是否有类似的东西:
Select * from table
where (11, 12, 24, 141) IN (CODE_01, CODE_02, ..., CODE_20);
或者
Select * from table
where (CODE_01, CODE_02, ..., CODE_20) IN (11, 12, 24, 141);
我想,理论上我可以连接 20 个字段并使用正则表达式进行搜索,但我敢打赌,这是一个非常低效(而且速度很慢)的查询。
谢谢