Oracle:混合IN和LIKE,有可能吗?
答
如果只有几个,只是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',...)
此检查的最后一个字符是值的集合。
答
如何使用像自己?
Column LIKE '%1' OR Column LIKE '%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:]]$'
答
基本上与其他示例相同,但最接近您的示例:
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-20 11:14:40