0

有可能做这样的事情吗?

IE。

IN ('%1', '%2')

值不少

你将如何解决这个任务?

4

4 回答 4

3

您也可以使用 REGEXP_LIKE 代替 LIKE。在这种情况下它可以更加灵活。

要获得以“1”或“2”结尾的所有内容,只需使用:

SELECT * FROM table_name WHERE REGEXP_LIKE(col_name, '[12]$')

[12] 表示匹配 1 或 2。 $ 表示匹配字符串的结尾。

如果你需要这样的东西:

LIKE '%1' OR LIKE '%2' or LIKE '%A' or LIKE '%W'

...您只需在方括号内添加其他字符:

SELECT * FROM table_name WHERE REGEXP_LIKE(col_name, '[12AW]$')

或者,如果你想要任何以数字结尾的东西,你可以使用这个:

SELECT * FROM table_name WHERE REGEXP_LIKE(col_name, '[[:digit:]]$'
于 2013-02-20T13:35:53.887 回答
2

如果您只有几个,只需将它们与or

column like '%1' or column like '%2' or...

如果你有很多,你可以创建一个包含模式的表并加入它。

create table matches (
   match char(10)
);

insert into matches values
    ('%1'),('%2'),...;

select * from table
    inner join matches on table.column like matches.match;

如果单行匹配多个模式,则重复行会出现一些问题,但您可以根据您想要的最终输出类型来修改它。

作为第三种选择,您可以使用substr()而不是like它们的长度相同:

select * from table where substr(column,-1,1) in ('1','2',...)

这将检查最后一个字符是否在值集中。

于 2013-02-20T11:06:57.510 回答
0

使用 like 本身怎么样?

Column LIKE '%1' OR Column LIKE '%2'
于 2013-02-20T11:06:36.603 回答
-1

与其他示例基本相同,但最接近您的示例:

SELECT deptno, empno, ename FROM scott.emp
 WHERE job IN 
   (SELECT job FROM scott.emp WHERE job Like ('SALE%') OR job Like ('MANAG%'))
/
于 2013-02-20T21:39:50.940 回答