我在 MySQL 中有一个表 ITEM,它存储数据如下:
ID FEATURES
--------------------
1 AB,CD,EF,XY
2 PQ,AC,A3,B3
3 AB,CDE
4 AB1,BC3
--------------------
作为输入,我将得到一个 CSV 字符串,例如“AB,PQ”。我想获取包含 AB 或 PQ 的记录。我意识到我们必须编写一个 MySQL 函数来实现这一点。因此,如果我们在 MySQL 中定义了这个神奇的函数 MATCH_ANY 来执行此操作,那么我将简单地执行如下 SQL:
select * from ITEM where MATCH_ANY(FEAURES, "AB,PQ") = 0
上述查询将返回记录 1、2 和 3。
但是我在实现这个函数时遇到了各种各样的问题,因为我意识到 MySQL 不支持数组并且没有简单的方法来基于分隔符拆分字符串。
改造桌子对我来说是最后的选择,因为它涉及很多问题。
我可能还想执行包含多个 MATCH_ANY 函数的查询,例如:
select * from ITEM where MATCH_ANY(FEATURES, "AB,PQ") = 0 and MATCH_ANY(FEATURES, "CDE")
在上述情况下,我们将得到记录 (1, 2, 3) 和 (3) 的交集,这将是 3。
任何帮助都深表感谢。
谢谢