我正在尝试使用以下代码,并在没有VBA的情况下使其DRY。代码(ms-access2007sql(:
SELECT *
FROM Student_Enrollment
WHERE ID LIKE '*2*'
OR ID LIKE '*5*'
OR ID LIKE '*8*'
OR ID LIKE '*17*'
OR ID LIKE '*14*'
OR ID LIKE '*11*'
OR ID LIKE '*21*'
在我看来,像以下这样的事情应该是可能的,这似乎是合理的:
SELECT *
FROM Student_Enrollment
WHERE ID LIKE '*[2,5,8,17,14,11,21]*'
但它不起作用。它将每个列表元素视为自己的列表,例如,它返回id包含1的条目,尽管1不在上面的列表中,但11在其中,它认为11只是1,1…如何解决这个问题?
不幸的是,您无法完全按照自己的意愿进行操作。但你可以将你的逻辑简化为:
SELECT *
FROM Student_Enrollment
WHERE ID LIKE "*[258]*" OR
ID LIKE "*1[174]*" OR
ID LIKE "*21*';
然后,如果某个东西匹配">21";,则它也匹配"*2〃;,所以最后一个条件是多余的:
SELECT *
FROM Student_Enrollment
WHERE ID LIKE "*[258]*" OR
ID LIKE "*1[174]*"