php - 在 SQL 字段中有一个数组。如何系统地展示它?

标签 php mysql sql codeigniter

我在数据馈送中有一个字段,其中包含一些用逗号分隔的值。对于一条记录,值为:

A06,C05,C06,C15,C18,C19,C21,C22,E05,E22,G11,J02,J07,L04,L07,M01,M05,N03,N07,N10,N11,N12,N18,N19,N20,N24,O02,O03,O04,O06,O09,O14,O15,O16,O20,O21,O31,Q01,Q04,Q08,R07,S08,T08,T12,T23,T32,U01,U03,U04,U06,U13,W09,W11,W16,W19,W30,W45,X02,X03,X12,Z07

我有一个单独的表格,其中包含关于每个代码含义的一些描述。当我查询主表并将这个字段名称作为值时,我可以使用 explode 将其放入数组并使用 foreach 循环输出每个值。

问题是,我想显示存储在另一个表中的描述。遍历它以在列表中显示这些值的正确方法是什么?

例如,C21 表示“封闭式社区”。

最佳答案

您可以使用 FIND_IN_SET() 功能。

例如你有这样的记录

Orders Table
------------------------------------
OrderID     |     attachedCompanyIDs
------------------------------------
   1                     1,2,3               -- comma separated values
   2                     2,4     

Company Table
--------------------------------------
CompanyID      |        name
--------------------------------------
    1                 Company 1
    2                 Another Company
    3                 StackOverflow
    4                 Nothing

使用函数

SELECT name 
FROM orders, company
WHERE orderID = 1 AND FIND_IN_SET(companyID, attachedCompanyIDs)

结果

name
---------------
Company 1
Another Company
StackOverflow

关于php - 在 SQL 字段中有一个数组。如何系统地展示它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12151979/

相关文章:

mysql - sql查询以获取具有折扣的季节性价格的产品

mysql - ANSI SQL 转换列中的行

sql - 计算销货成本

php - 用搜索 Eloquent 过滤

Php如何发送带有粗体文本的邮件

php - 单击按钮后运行 PHP 代码但不刷新页面

mysql - STR_TO_DATE 函数返回 0000-00-00

mysql - 如何根据出发地和目的地 ID 的 map 复制字段多行

php - jQuery 倒计时与更新

mysql - 查找连续字段,直到字段更改并将序列号添加到具有相同名称的行