【问题标题】:Select where in (field which is an imploded array)选择位置(内爆数组的字段)
【发布时间】:2014-10-11 01:25:09
【问题描述】:

我的数据库表中有一个字段,它是一个使用逗号作为胶水的整数的内爆数组。这些数字代表另一个表中行的 ID。

例如,此字段可以包含以下任何值:

2 2,5,12 5,6 14 4,12,55 等等

我将如何搜索在所述字段中包含“5”的所有行?

假设我想找到包含“5”的行,因此它会为所述字段找到具有以下任何一项的行:

5 5,12 3,5,8 1,4,5 等等

非常感谢任何帮助。

【问题讨论】:

  • Can Mysql Split a column? 的可能重复项
  • 是的,这是相同的要求,但对于 MySQL 来说,2009 年 8 月是很久以前的事了。

标签: mysql select where


【解决方案1】:

使用find_in_set()

mysql> SELECT FIND_IN_SET('b','a,b,c,d');
        -> 2

见:http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set


但是,如果您特别频繁地搜索非规范化数据,我不建议您存储它。此类数据的规范化表可以利用索引。

【讨论】:

  • 我刚刚找到它,但谢谢 :) 将标记为已解决。
  • 没问题,打勾也可以帮助其他人找到它:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-11
  • 1970-01-01
  • 2012-05-01
  • 2012-04-08
  • 1970-01-01
  • 1970-01-01
  • 2011-12-04
相关资源
最近更新 更多