2013-03-24 47 views
0

我在php中使用了一个简单的mysql表,当我遇到这个问题时,我想知道是否有解决方案。在表列中分割数据进行搜索

该表以逗号分隔格式包含用户名和他的位置。

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

我想知道是否有任何方式写一个MySQL查询,以便它会返回我是谁拥有的位置为A. 基本上如果逗号分隔值比赛中的一个值,记录用户应该返回。

我知道这是一种更好的方式来将它们存储为单独的记录,但我只是好奇如果这样的检索是可能的。 在此先感谢。

回答

2

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

但是,如果你不能改变表结构,MySQL有一个FIND_IN_SET()功能可用于返回匹配所需的值的行:

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

SQL Fiddle with Demo

+0

哦,这是伟大的。不知道mysql有这个功能。谢谢。 – 2013-03-24 16:46:59

+0

@AnuragRamdasan是的,这是一个有用的方式来查找列表中的数据。 – Taryn 2013-03-24 16:47:48