mysql比较两组唯一的id字段,它是varchar数据类型并用逗号分隔

时间:2011-01-06 07:58:19

标签: mysql sql

一个表有一个字段,在其中我存储了许多由逗号分隔的另一个表的索引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,或者我们是否需要使用更多查询来执行更多步骤?

2 个答案:

答案 0 :(得分:1)

嘿,在你的查询中使用正则表达式

$string = '12,50,56';
SELECT * from tablename where gids REGEXP [[:<:]].$string.[[:>:]]

这将匹配确切的模式

要匹配任何包含12的字段,请使用[[:&lt;:]]

Sanil

答案 1 :(得分:1)

您可以使用substring_indexfind_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 |
+---------------------------------------------------------------+

但是你应该考虑规范化你的数据结构,你的方式太不正常了。