一个表有一个字段,在其中我存储了许多由逗号分隔的另一个表的索引id,如下所示
表sam
id - name - gid
2 - 萨米 - 23,12,43
gid是对另一个表
的引用现在从客户端我发送一些gid到服务器进行比较
所以我需要将那些与表sam相匹配
来自客户端的gid可能是任何顺序,如12,43,23或12,43,57
并且我希望匹配任何出现,例如,如果从客户端gids是12,40,50并且如果表中的任何字段有12则应该匹配。
是否可以使用sql,或者我们是否需要使用更多查询来执行更多步骤?
答案 0 :(得分:1)
嘿,在你的查询中使用正则表达式
$string = '12,50,56';
SELECT * from tablename where gids REGEXP [[:<:]].$string.[[:>:]]
这将匹配确切的模式
要匹配任何包含12的字段,请使用[[:&lt;:]]
Sanil
答案 1 :(得分:1)
您可以使用substring_index
和find_in_set
mysql> select find_in_set(substring_index('12,40,50', ',', 1), '12,13,14');
+--------------------------------------------------------------+
| find_in_set(substring_index('12,40,50', ',', 1), '12,13,14') |
+--------------------------------------------------------------+
| 1 |
+--------------------------------------------------------------+
mysql> select find_in_set(substring_index('12,40,50', ',', 1), '121,13,14');
+---------------------------------------------------------------+
| find_in_set(substring_index('12,40,50', ',', 1), '121,13,14') |
+---------------------------------------------------------------+
| 0 |
+---------------------------------------------------------------+
但是你应该考虑规范化你的数据结构,你的方式太不正常了。