【问题标题】:using % (as LIKE) in IN [duplicate]在 IN [重复] 中使用 %(如 LIKE)
【发布时间】:2012-12-26 16:03:52
【问题描述】:

可能重复:
Using SQL LIKE and IN together

我有如下表格。

create table tab1 (
    id int, col1 varchar(20), col2 varchar(20),
    col3 varchar(20), col4 varchar(20)
);

我在里面有值

insert into tab1 values
(1,'column011','column012','column013','column014'),
(2,'column021','column022','column023','column024'),
(3,'column031','column032','column033','column034'),
(4,'column041','column042','column043','column044')
;

之前我的要求是,查找行,其中任何列的数据为column011。所以我执行了下面的查询并得到了我想要的。

select * from tab1
WHERE 'column011' in (col1,col2,col3,col4);

我在上面使用了CONCAT_WS,因为它是简单的查询。

select * from tab1 
where CONCAT_WS('-', col1, col2, col3, col4) LIKE '%column011%';

现在我的要求是,查找行,其中任何列包含数据为mn01。所以我执行了下面的查询并得到了我想要的。

select * from tab1 
where CONCAT_WS('-', col1, col2, col3, col4) LIKE '%mn01%';

但是我想通过使用简单查询(第一个查询)来完成这项工作。所以我尝试了以下。

select * from tab1
WHERE '%mn01%' in (col1,col2,col3,col4);

有什么方法可以通过修改上述查询来做我想做的事吗? (最后一次查询)

Data at sqlfiddle

【问题讨论】:

  • 可能是因为在这个涵盖每个主要 RDBMS 的确切问题上有数百个重复项?
  • @Ben :您提供的链接在我看来并不重复。你能再给我几个副本吗?

标签: mysql concat sql-like


【解决方案1】:

变量呢?

set @var = 'mn01';
select * from tab1
WHERE '%' & @var & '%' in (col1,col2,col3,col4);

【讨论】:

  • 它给了我所有的行
  • @FahimParkar 如果您看到任何重复的问题条目,请分享。我渴望探索。
  • 好的。关于所有条目,this is what I was talking about
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-06
  • 1970-01-01
  • 2017-08-10
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
  • 2010-12-24
相关资源
最近更新 更多