如何在MySQL中搜索爆炸阵列数据

时间:2018-03-17 07:21:58

标签: php mysql sql

我的桌面结构为休闲

+----+------+---------+---------+
| id | name | heading |  catid  |
+----+------+---------+---------+
| 1  | ajay |   xyz   | 1:25:22 |
| 2  |sanjay|   abc   |15:25:45 |
+----+------+---------+---------+

如果我得到条件catid = 22则获得结果

+---+-----+----+---------+
| 1 | ajay| xyz| 1:25:22 |
+---+-----+----+---------+

如果我得到条件catid = 15则获得结果

+---+-----+----+----------+
| 2 | sanjay| abc|15:25:45|
+---+-----+----+----------+

如果条件catid = 25则获得结果

+---+-----+----+----------+
| 1 | ajay| xyz| 1:25:22  |
+---+-----+----+----------+
| 2 | sanjay| abc|15:25:45|
+---+-----+----+----------+

1 个答案:

答案 0 :(得分:3)

使用逗号替换FIND_IN_SET中的冒号后,您可以使用catid

SELECT *
FROM yourTable
WHERE FIND_IN_SET('25', REPLACE(catid, ':', ',')) > 0;

但是,长期的良好投资是规范化catid数据并将这些ID分别记录在其中。

还有一种方法可以使用LIKE运算符执行此操作,但这很难看:

SELECT *
FROM yourTable
WHERE CONCAT(':', catid, ':') LIKE '%:25:%';