如何编写SQL语句以使用“LIKE”来匹配九个不同的值?

14 浏览
0 Comments

如何编写SQL语句以使用“LIKE”来匹配九个不同的值?

这个问题已经有了答案

SQL中是否有\"LIKE\"和\"IN\"的组合?

我需要选择所有符合以下条件的记录:

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

这里的value21, ..., value29是用户可以在提交查询之前在表单中放置的参数。它们是(不是连续的)数字代码,而FIELD2是一个保存字符串值的数据库列。

哪种形式的SQL查询语句最为紧凑?

注:这与早期的问题相关,但这里需要使用LIKE而不是等号。

admin 更改状态以发布 2023年5月21日
0
0 Comments

一种方式:

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%'

等等。

0
0 Comments

恐怕你只能使用:

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

至少在标准SQL中 (你的特定引擎可能提供某种形式的全文索引来帮助你)。

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

0