有可能做这样的事情吗?
IE。
IN ('%1', '%2')
值不少
你将如何解决这个任务?
您也可以使用 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:]]$'
如果您只有几个,只需将它们与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',...)
这将检查最后一个字符是否在值集中。
使用 like 本身怎么样?
Column LIKE '%1' OR Column LIKE '%2'
与其他示例基本相同,但最接近您的示例:
SELECT deptno, empno, ename FROM scott.emp
WHERE job IN
(SELECT job FROM scott.emp WHERE job Like ('SALE%') OR job Like ('MANAG%'))
/