0

可能重复:
同时使用 SQL LIKE 和 IN

我有如下表。

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);

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

sqlfiddle 中的数据

4

1 回答 1

0

变量呢?

set @var = 'mn01';
select * from tab1
WHERE '%' & @var & '%' in (col1,col2,col3,col4);
于 2012-12-26T16:06:44.577 回答