如何编写一个SQL语句来为九个不同的值使用"LIKE"?

tic*_*tic 8 sql logic

我必须选择所有记录:

where FIELD2 like '%value21%'
or FIELD2 like '%value22%'
or FIELD2 like '%value23%'
-- repeat up to
or FIELD2 like '%value29%'
Run Code Online (Sandbox Code Playgroud)

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

哪个是写下我的SQL查询最紧凑的形式?

注意:这与之前的问题有关,但这需要LIKE而不是等于.

Lar*_*tig 18

我担心你会被困在一起:

  WHERE (FIELD2 LIKE '%value21' OR 
         FIELD2 LIKE '%value22' OR 
         FIELD2 LIKE '%value23' ...)
Run Code Online (Sandbox Code Playgroud)

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

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

  • +1"我建议尽快解决问题".好建议 (4认同)
  • @Robus:任何解决方案比持续问题更昂贵的地方. (2认同)