在表列中拆分数据以进行搜索

时间:2013-03-24 16:34:57

标签: php mysql csv

当我遇到这个问题时,我正在使用php中的一个简单的mysql表,我想知道是否有解决方案。

该表以逗号分隔格式保存用户名及其位置。

 id|user|locations
------------------
 1 |abc | A, B, C
------------------
 2 |xyz | P, Q, R

我想知道是否有任何方法可以编写一个mysql查询,以便它返回给我一个位置为A的用户。 基本上,如果逗号分隔值中的一个值匹配,则应返回记录。

我知道这是将它们存储为单独记录的更好方法,但我很好奇是否可以进行这样的检索。 提前谢谢。

2 个答案:

答案 0 :(得分:2)

理想情况下,您应该考虑规范化数据,这样就不会存储以逗号分隔的列表。

但如果你不能改变表结构,MySQL有一个FIND_IN_SET()函数,可以用来返回符合你想要的值的行:

select id, user, locations
from yourtable
where find_in_set('A', locations)

请参阅SQL Fiddle with Demo

答案 1 :(得分:1)

我们认为

以下查询可能会对您有所帮助 -

SELECT * FROM table WHERE column REGEXP'(^ |,)A($ |,)'

您可以在 -

中找到有用的链接

How to query comma delimited field of table to see if number is within the field