0

重複の可能性:
SQLLIKEと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 に答える