如何在sqlLIKE通配符中使用非字符列表



我正在尝试使用以下代码,并在没有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]*"

相关内容

  • 没有找到相关文章

最新更新