0

可能重复:
SQL 中是否有“LIKE”和“IN”的组合?

我们可以像这样在同一个查询中使用like和in条件吗

    select inticap(last_name),length(last_name) from employees
    where last_name in(like '%J%',like '%A%',like '%M%');

OR 

  select inticap(last_name),length(last_name) from employees
where last_name like in( '%J%', '%A%',l'%M%');

我知道这行不通。在这里,我想显示姓氏大写的首字母和姓氏的长度,我想用字母“A”、“J”和“M”显示姓名。请帮我

4

2 回答 2

3
 select inticap(last_name),length(last_name) from employees
where last_name like '%J%' OR last_name like '%A%' OR last_name '%M%';
于 2012-06-08T06:09:02.347 回答
3

正如已经提到的,您不能直接组合LIKE,并且IN如您所愿。

这是一个笨拙的选择:

SELECT INITCAP(last_name)
,      LENGTH(last_name)
FROM   employees
WHERE  +1 IN (SIGN(INSTR(last_name,'J'))
          ,   SIGN(INSTR(last_name,'A'))
          ,   SIGN(INSTR(last_name,'M')))

或者,如果您至少使用 10g,则可以使用正则表达式:

SELECT INITCAP(last_name)
,      LENGTH(last_name)
FROM   employees
WHERE  REGEXP_LIKE(last_name,'(J|A|M)')

...但一般来说,正则表达式比普通 SQL 函数更占用 CPU。

于 2012-06-08T13:48:33.620 回答