php - 如何在 MySQL 中搜索分解数组数据

标签 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|
+---+-----+----+----------+

最佳答案

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

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

但一项良好的长期投资是规范化 catid 数据并在单独的记录中获取这些 ID。

还有一种方法可以使用 LIKE 运算符来完成此操作,但它很丑陋:

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

关于php - 如何在 MySQL 中搜索分解数组数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49333552/

相关文章:

php - 从单个产品描述(woocommerce)中排除类别并使其不可链接

php - 使用 php 从数据库检索表,然后选择特定项目

php - 使用 PHP 和 JavaScript 下载状态

mysql - 如何在 WSO2 数据服务服务器中链接外部 MySQL 数据库

java - JDBC 无法登录 LocalDB 实例,但在 SSMS 中我可以登录

sql - 如何在select语句中使用变量?

php - 通过坐标获取单元格

mysql - Cakephp 3 小写sql查询

mysql - 使用触发器在 mySQL 中创建第二个表,包括一些条件

sql - 如何将表架构和约束复制到不同数据库的表?