查询逗号分隔字符串的特定部分

时间:2011-12-03 07:50:29

标签: php mysql

我想知道是否可以查询逗号分隔字符串的特定部分,如下所示:

$results = mysql_query("SELECT * FROM table1 WHERE $pid=table1.recordA[2] ",$con);

$pid是一个数字

recordA包含

等数据
34,9008,606,,416,2

我想检查第三部分(606)

提前谢谢

2 个答案:

答案 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.我和下一个人一样喜欢正常化,但有时候分解它只是比它的价值更麻烦;)