如何在查询中使用like和[重复]

Posted

技术标签:

【中文标题】如何在查询中使用like和[重复]【英文标题】:how to use like and in query [duplicate] 【发布时间】:2012-06-12 05:09:12 【问题描述】:

可能重复:Is there a combination of “LIKE” and “IN” in SQL?

我们可以像这样在同一个查询中使用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”显示名字。请帮帮我

【问题讨论】:

***.com/questions/4335359/… 和 ***.com/questions/10747996/… 和许多其他人的重复 不,它不起作用,您可以在查询中使用 OR,例如 last_name like '%J%' OR like '%A%' 【参考方案1】:

如前所述,您不能随意组合LIKEIN

这是一个笨拙的选择:

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。

【讨论】:

【参考方案2】:
 select inticap(last_name),length(last_name) from employees
where last_name like '%J%' OR last_name like '%A%' OR last_name '%M%';

【讨论】:

嗨,我知道它会起作用,但我想用 in 和 like 编写查询 你可以看看 - ***.com/questions/3350106/… 关于上一条评论中的链接:除了创建表之外,您还可以使用 piplined 函数并将您的“喜欢”条件以编程方式添加到 PL/SQL 表中。

以上是关于如何在查询中使用like和[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在单个查询中使用 count、'like' 和 group by?

如何在 SQL Server 查询中同时使用 LIKE 和 NOT LIKE

在sql中使用LIKE和IN与子查询[重复]

LIKE查询与实体框架[重复]

如何在mysqli准备好的语句中使用SQL LIKE子句[重复]

Oracle 分页查询在子查询中使用了 排序和like 会影响效率吗? 怎样优化呢