SELECT find_in_set("1","1,2,3,4,5"); //return 1mysql中是否有函数可以从一组值返回非匹配值,如
SELECT find_in_set("1","1,2,3,4,5"); 预期产出为: 2,3,4,5
如果有什么功能的话帮我。
发布于 2014-07-10 10:43:02
据我所知,除了给定的输入之外,我认为mysql中没有给出结果的函数。
但是,你可以通过这样做得到你想要的。
您可以根据您的要求修改它。
从非find_in_set的table_name中选择*(“1”,"1,2,3,4,5");
发布于 2014-07-10 10:47:41
您可以始终使用replace()
select replace(concat(',', '1,2,3,4,5', ','), concat(',', '1', ','), '')这将分隔符放在两个列表的开头和结尾,这样10就不会与100混淆。如果这不是一个问题,那么您不需要分隔符。
发布于 2014-07-10 10:52:14
下面是如何通过使用SUBSTRING_INDEX来实现的。
但是,请确保在值之前和之后加上",“,否则它会按不同位置可用的值进行拆分,也就是说,如果查找12,它也会在值为123的情况下被拆分。
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?上发布了另一个答案。
https://stackoverflow.com/questions/24673950
复制相似问题