0

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

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

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

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

我知道将它们存储为单独的记录是一种更好的方法,但我只是好奇这样的检索是否可能。提前致谢。

4

2 回答 2

2

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

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

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

请参阅带有演示的 SQL Fiddle

于 2013-03-24T16:37:28.133 回答
1

我们认为

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

SELECT * FROM tableWHERE columnREGEXP '(^|,)A($|,)'

你可以有一个有用的链接 -

如何查询表的逗号分隔字段以查看数字是否在字段内

于 2013-03-24T16:41:41.067 回答