【问题标题】:How to use a non-char list inside of an sql-LIKE wildcard?如何在 sql-LIKE 通配符中使用非字符列表?
【发布时间】:2021-09-27 03:19:59
【问题描述】:

我正在尝试使用以下代码并在没有 VBA 的情况下使其干燥。 代码(ms access 2007 sql):

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 ......解决这个问题?

【问题讨论】:

    标签: sql ms-access-2007 wildcard sql-like


    【解决方案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]*"
    

    【讨论】:

    • 谢谢,必须在第二个括号内添加 1(包括 11),但现在可以了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-30
    • 1970-01-01
    • 1970-01-01
    • 2023-01-19
    • 1970-01-01
    • 1970-01-01
    • 2012-04-29
    相关资源
    最近更新 更多