首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql中find_in_set的相反功能

mysql中find_in_set的相反功能
EN

Stack Overflow用户
提问于 2014-07-10 10:15:39
回答 4查看 3.7K关注 0票数 2
代码语言:javascript
复制
SELECT find_in_set("1","1,2,3,4,5"); //return 1

mysql中是否有函数可以从一组值返回非匹配值,如

代码语言:javascript
复制
SELECT find_in_set("1","1,2,3,4,5"); 

预期产出为: 2,3,4,5

如果有什么功能的话帮我。

EN

回答 4

Stack Overflow用户

发布于 2014-07-10 10:43:02

据我所知,除了给定的输入之外,我认为mysql中没有给出结果的函数。

但是,你可以通过这样做得到你想要的。

您可以根据您的要求修改它。

从非find_in_set的table_name中选择*(“1”,"1,2,3,4,5");

票数 4
EN

Stack Overflow用户

发布于 2014-07-10 10:47:41

您可以始终使用replace()

代码语言:javascript
复制
select replace(concat(',', '1,2,3,4,5', ','), concat(',', '1', ','), '')

这将分隔符放在两个列表的开头和结尾,这样10就不会与100混淆。如果这不是一个问题,那么您不需要分隔符。

票数 0
EN

Stack Overflow用户

发布于 2014-07-10 10:52:14

下面是如何通过使用SUBSTRING_INDEX来实现的。

但是,请确保在值之前和之后加上",“,否则它会按不同位置可用的值进行拆分,也就是说,如果查找12,它也会在值为123的情况下被拆分。

代码语言:javascript
复制
SELECT CONCAT(SUBSTRING_INDEX("11,22,33,44,55", ',22,', 1), ",",  SUBSTRING_INDEX("11,22,33,44,55", ',22,', -1));

如果你对这个解决方案没意见,那么你应该创建一个函数。FIND_NOT_IN_SET并传递两个参数并返回最终字符串。

我还用准备好的语句在How to select all the 'not' part against the 'in' set in MySQL?上发布了另一个答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24673950

复制
相关文章

相似问题

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