我正在尝试构建一个查找多个不同事物的 SQL 查询,我认为 like 命令是实现此目的的最佳方法
查询中的行是:
where *field* like 'AB%'
它列出了表中以 AB 开头的所有实例。
当我尝试添加多个实例时,虽然我收到一条错误消息,但我想做如下的事情:
where *field* like ('AB%','CD%','EF%')
所以我得到了以我提供的文本列表开头的特定条目的字段
有人可以帮我解决这个问题吗?
我正在尝试构建一个查找多个不同事物的 SQL 查询,我认为 like 命令是实现此目的的最佳方法
查询中的行是:
where *field* like 'AB%'
它列出了表中以 AB 开头的所有实例。
当我尝试添加多个实例时,虽然我收到一条错误消息,但我想做如下的事情:
where *field* like ('AB%','CD%','EF%')
所以我得到了以我提供的文本列表开头的特定条目的字段
有人可以帮我解决这个问题吗?
你要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).*$')
WHERE *field* LIKE 'AB%' OR *field* LIKE 'CD%' OR *field* LIKE 'EF%'
您可以使用 instr 函数。如果它在字符串的第一个位置找到您想要的子字符串,它将返回 1:
where instr(field,'AB') = 1
OR instr(field,'CD') = 1
OR instr(field,'ED') = 1
如果您使用的是 Oracle,则可以编写:
where regexp_like(t1, '^AB|^CD|^EF')
等等
如果要使用单个字符串,请尝试使用 REGEXP:
WHERE *field* REGEXP 'AB(.*)|CD(.*)|EF(.*)'