SQL查询无法正常工作(数字)

时间:2014-10-06 09:31:16

标签: php mysql sql

我正在用MySQL开发php脚本。我将流派数据存储为" 1,2,3和#34;(ID)

然后我遇到搜索数据的问题。

我的数据表是:

metas table

-------------------
meta_id,meta_genres
--------------------
|1     |1,2,3      |

|2     |10,3,4     |

|3     |12,3,5     |

-------------------

我的查询是

SELECT * FROM metas WHERE meta_genres LIKE '%1%'

然后返回ID:1,2,3

我想它只返回1.

我该如何解决?

最诚挚的问候。

3 个答案:

答案 0 :(得分:4)

使用FIND_IN_SET(str,strlist) function

SELECT *
 FROM metas
 WHERE FIND_IN_SET(1, meta_genres)

编辑:如果meta_genres中的逗号(例如1 , 2 , 3)之前有空格,则上面的查询可以返回空集。解决方法:

SELECT *
 FROM metas
 WHERE FIND_IN_SET(1, REPLACE(meta_genres, ' ', ''));

答案 1 :(得分:1)

您还可以使用REGEX在集合输入

中仅查找分隔的1
SELECT * FROM metas WHERE meta_genres REGEXP '[[:<:]]1[[:>:]]'

答案 2 :(得分:-1)

你永远不会只追溯1,那是因为1之后的数字是2,3字符串的一部分。因此查询不会将这些数字看作单个数字,而只是作为整个字符串......