如何在查询中使用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】:如前所述,您不能随意组合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。
【讨论】:
【参考方案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