我想知道是否可以查询逗号分隔字符串的特定部分,如下所示:
$results = mysql_query("SELECT * FROM table1 WHERE $pid=table1.recordA[2] ",$con);
$pid
是一个数字
和recordA
包含
34,9008,606,,416,2
我想检查第三部分(606)
提前谢谢
答案 0 :(得分:0)
在mySQL字段中使用逗号分隔列表或任何数据分隔是不受欢迎的,并且在所有范围内都是不好的做法。
不是在mySQL字段中查询已分隔列表的元素,而是考虑将字段分解为自己的表,然后创建邻接列表以在table1
和它之间创建1:多关系。相关变量。
如果你被提交到这条路线,最简单的方法是使用PHP来管理它,因为mySQL只有很少的工具(在正则表达式/文本搜索之上和之外)来深入挖掘你想要提取的数据。 $results = explode(',',$query);
将从返回的字段中创建一个变量数组,允许您根据需要对其进行尽可能多的条件检查。
但是,请考虑将此添加到您需要重新编写/重新思考的内容中。名单。关系表结构允许您直接在数据库中查询$pid
的值,因为它将包含在其自己的字段中并且已链接
如果delimetered变量列表具有不确定的长度或者变量之间的关系是层次结构的,那么最好在stackoverflow中搜索mySQL中有向无环图的信息,以找到更好的解决方案。
在不知道此脚本的性质或预期目的的情况下,我无法更详细地回答。我希望这有点帮助。
答案 1 :(得分:0)
这个怎么样:
SELECT * FROM table1 WHERE FIND_IN_SET({$pid}, recordA) = 3
确保索引记录A.我和下一个人一样喜欢正常化,但有时候分解它只是比它的价值更麻烦;)