代码之家  ›  专栏  ›  技术社区  ›  tic

如何编写一个SQL语句来对九个不同的值使用LIKE?[副本]

  •  8
  • tic  · 技术社区  · 14 年前

    我必须选择所有记录,其中:

    where FIELD2 like '%value21%'
    or FIELD2 like '%value22%'
    or FIELD2 like '%value23%'
    -- repeat up to
    or FIELD2 like '%value29%'
    

    在这里, value21 , ..., value29 是用户在提交查询之前可以放入表单中的参数。它们是(不是后续的)数字代码,并且 FIELD2 是包含字符串值的数据库列。

    哪一个是写下我的SQL查询的最紧凑的表单?

    注:这与 an earlier question ,但这需要 LIKE 而不是平等。

    2 回复  |  直到 7 年前
        1
  •  18
  •   Larry Lustig    14 年前

    恐怕你得坚持:

      WHERE (FIELD2 LIKE '%value21' OR 
             FIELD2 LIKE '%value22' OR 
             FIELD2 LIKE '%value23' ...)
    

    至少在标准SQL中(您的特定引擎可能提供某种形式的全文索引,这将有所帮助)。

    这样的查询通常表示数据库设计中的规范化问题,在一个字段值中存储多个值。如果您的情况是这样的,并且您对数据库模式有任何程度的控制,我建议您尽快解决问题。否则,请检查您的医疗保险,以确保它涵盖SQL诱发的精神病这可能会让您发疯。

        2
  •  1
  •   NotMe    14 年前

    单程:

    select Field1, Field2 from Table where Field2 like '%val%'
    UNION
    select Field1, Field2 from Table where Field2 like '%val2%'
    UNION
    select Field1, Field2 from Table where Field2 like '%val2%'