我需要从MariaDB源查询表。

有一个包含几个用逗号分隔的值的字段,我不知道如何继续。

就是这种情况:

TABLE: Aphorisms_Categories
Field: id


与有关

TABLE: Aphorisms
Field: categories


问题在于类别通常包含2、3、4、67之类的字符串。

我不知道为什么,原始开发人员决定不创建代表N-M关系的第三张表。但是现在,对我而言,不可能找到一种方法来检索属于类别3的所有格言(例如)。

有什么提示吗?

最佳答案

Shirkam的答案很接近,但是有一个问题:

如果3是该字段的第一个或最后一个类别,即'2,4,33,3',则
SELECT * FROM Aphorisms WHERE categories LIKE '%,3,%'
不会抓住它。而且,如果您从LIKE子句中删除逗号,则会在多位数类别上得到误报。

由于您使用的是MariaDB,请使用:
SELECT * FROM Aphorisms WHERE categories REGEXP '(^|,)3($|,)'

10-07 15:47