我试图获取一个索引列表,然后使用它们将varchar设置为特定的字符串,以便在我的数据库中进行筛选。问题是,我尝试使用了Like命令:
Declare StateList varchar(150);
Declare States varchar(150);
set @StateList = State;
set @States = '';
if (@StateList Like '%1%')then set @States := Concat(@States, '1,2');
elseif(@StateList Like '%2%')then set @States := Concat(@States,'3');
elseif(@StateList Like '%3%')then set @States := Concat(@States, '4,5');
end if;
select @StateList,@States;当我输入123时,当我希望它返回1到5时,它只返回3。
然后我试着
Declare StateList varchar(150);
Declare States varchar(150);
set @StateList = State;
set @States = '';
if CONTAINS(@StateList, '1')then set @States := Concat(@States, '1,2,');
elseif CONTAINS(@StateList ,'2')then set @States := Concat(@States,'3');
elseif CONTAINS(@StateList,'3')then set @States := Concat(@States, '4,5');
end if;
select @StateList,@States;哪一个没有返回,我很困惑,因为我认为第一个解决方案会奏效吗?
任何建议都会很好!提前感谢
发布于 2016-05-04 15:20:29
您应该使用单独的IF's,if,elseif意味着其中只有一个可以为真。试着做这样的事情:
if (@StateList Like '%1%')then set @States := Concat(@States, '1,2');
end if;
if(@StateList Like '%2%')then set @States := Concat(@States,'3');
end if;
if(@StateList Like '%3%')then set @States := Concat(@States, '4,5');
end if;发布于 2016-05-04 15:24:55
我同意@sagi所说的IFs应该分开,但是我想知道结果是'3‘而不是'1,2’。也许您可以尝试这个函数instr,因此代码如下:
if (INSTR(@StateList, '1') > 0)then set @States := Concat(@States, '1,2');
end if;
...https://stackoverflow.com/questions/37031789
复制相似问题