检索以逗号分隔的字符串中存在值的行 [英] Retrieve rows where a value exists within a comma separated string

查看:71
本文介绍了检索以逗号分隔的字符串中存在值的行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

ID       RoomNo

1     4, 5, 6, 7, 8
2     4, 5, 6
3     6, 7, 8
4     5, 6
5     4, 5, 6, 7
6     4, 15, 6, 7





'RoomNo'字段类型是varchar。



当我使用



'RoomNo' field type is varchar.

When I use

SELECT * FROM table WHERE RoomNo LIKE '%5%' ;



我正在获得价值,但这不合适,因为我需要的价值包含5但是它也会在ID中得到15 - 6



而且我也尝试使用这个查询


am getting value but thats not proper because i need value contain 5 but it will get 15 also in id - 6

and also i tried to use this query

SELECT * FROM table WHERE FIND_IN_SET(7, RoomNo);





但是没有显示结果



but it not showing result

推荐答案

问题是你的数据。 %5%字面意思是<零个或多个字符> 5<零个或多个字符>。

您可以编辑第一个查询以排除无效的结果,例如:

The problem is your data. %5% literally means <zero or more characters>5<zero or more characters>.
You could edit the first query to exclude results that are not valid such as;
SELECT * FROM table WHERE RoomNo LIKE '%5%' and RoomNo NOT LIKE '%15%'



但这样效率很低,需要您输入您不想要的所有其他值,但仍然包含5.排除的数量取决于可能的字符数,如果你只谈论数字那么你会有20 - 见下文;

05,15,25,35,45,55,6 5,75,85,95

50,51,52,53,54,55,56,57,58,59

如果你也有角色的可能性那么你将有52个例外。



另外,我对FIND_IN_SET函数的理解不能像你使用它一样工作。它返回字符串中的位置,而不是表格中的位置 - 请参阅下面的文档链接。

http://www.w3resource.com/mysql/string-functions/mysql-find_in_set-function.php [ ^ ]


这篇关于检索以逗号分隔的字符串中存在值的行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆