我必须选择以下所有记录:
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
而不是等于。
答案 0 :(得分:17)
我担心你会被困住:
WHERE (FIELD2 LIKE '%value21' OR
FIELD2 LIKE '%value22' OR
FIELD2 LIKE '%value23' ...)
至少在标准SQL中(您的特定引擎可能提供某种形式的全文索引,这将有所帮助)。
这样的查询通常表示数据库设计中的规范化问题,其中多个值存储在单个字段值中。如果在您的情况下这是真的,并且您对数据库架构有任何程度的控制,我建议尽快解决问题。否则检查你的医疗保险,以确保它涵盖SQL引起的精神病 - 这可能会让你发疯。
答案 1 :(得分:1)
一种方式:
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%'
等