0

我正在尝试构建一个查找多个不同事物的 SQL 查询,我认为 like 命令是实现此目的的最佳方法

查询中的行是:

where *field* like 'AB%'它列出了表中以 AB 开头的所有实例。

当我尝试添加多个实例时,虽然我收到一条错误消息,但我想做如下的事情:

where *field* like ('AB%','CD%','EF%')

所以我得到了以我提供的文本列表开头的特定条目的字段

有人可以帮我解决这个问题吗?

4

5 回答 5

5

你要OR

WHERE field LIKE 'AB%' 
   OR field LIKE 'CD%'
   OR field LIKE 'EF%'

如果您使用其他WHERE子句标准,则需要使用括号将 OR 子句括起来。

希望能帮助到你...

编辑:

在您发表评论后,您可以尝试在您的子句中使用正则表达式,尤其是REGEXP_LIKE 。WHERE

类似于(未经测试)的东西:

SELECT *
  FROM table
 WHERE regexp_like(field, '^(AB|CD|EF).*$')
于 2012-07-30T13:21:12.060 回答
1

WHERE *field* LIKE 'AB%' OR *field* LIKE 'CD%' OR *field* LIKE 'EF%'

于 2012-07-30T13:19:59.270 回答
0

您可以使用 instr 函数。如果它在字符串的第一个位置找到您想要的子字符串,它将返回 1:

where instr(field,'AB') = 1
OR instr(field,'CD') = 1
OR instr(field,'ED') = 1
于 2012-07-31T02:47:39.213 回答
0

如果您使用的是 Oracle,则可以编写:

where regexp_like(t1, '^AB|^CD|^EF')

等等

于 2012-07-30T13:45:31.273 回答
-1

如果要使用单个字符串,请尝试使用 REGEXP:

WHERE *field* REGEXP 'AB(.*)|CD(.*)|EF(.*)'
于 2012-07-30T13:45:01.790 回答