首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL varchar包含

MySQL varchar包含
EN

Stack Overflow用户
提问于 2016-05-04 15:14:29
回答 2查看 1.9K关注 0票数 2

我试图获取一个索引列表,然后使用它们将varchar设置为特定的字符串,以便在我的数据库中进行筛选。问题是,我尝试使用了Like命令:

代码语言:javascript
复制
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。

然后我试着

代码语言:javascript
复制
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;

哪一个没有返回,我很困惑,因为我认为第一个解决方案会奏效吗?

任何建议都会很好!提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-04 15:20:29

您应该使用单独的IF'sif,elseif意味着其中只有一个可以为真。试着做这样的事情:

代码语言:javascript
复制
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;
票数 1
EN

Stack Overflow用户

发布于 2016-05-04 15:24:55

我同意@sagi所说的IFs应该分开,但是我想知道结果是'3‘而不是'1,2’。也许您可以尝试这个函数instr,因此代码如下:

代码语言:javascript
复制
if (INSTR(@StateList, '1') > 0)then set @States := Concat(@States, '1,2');
end if;
...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37031789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档