无法读取 GROUP_CONCAT 结果中的特定值

Posted

技术标签:

【中文标题】无法读取 GROUP_CONCAT 结果中的特定值【英文标题】:Cannot read specific values in GROUP_CONCAT result 【发布时间】:2012-03-23 04:10:50 【问题描述】:

我有一个 mysql 数据库,在我的一个查询中,我使用 GROUP_CONCAT 函数从单个行中获取值,作为用逗号分隔的字符串。最初,查询返回 BLOB,正如有人在另一个问题中建议的那样,我将 GROUP_CONCAT 更改为 GROUP_CONCAT(DISTINCT CONVERT(classes.type, CHAR(2)))。到目前为止,一切都很好。查询有效,我可以在 phpMyAdmin 中看到结果集中用逗号分隔的值。 GROUP_CONCAT 中使用的 call.type 字段只能有“1”或“2”作为值。所以结果类似于“1” - “1,2” - “2” - “1,2”(破折号在此处分隔结果)等。 问题是我无法使用 php 专门读取字符“2”。我已经尝试了一切,strpos,in_array(使用explode之后)。例如 strpos 在我使用 strpos($result,"1") 时返回字符的位置,但在我使用 strpos($result,"2") 时总是返回 0。 有任何想法吗?? 谢谢

【问题讨论】:

你试过逐字符打印字符串吗? CONVERTed 字符串的编码是什么?喜欢for($i=...) var_dump($result[$i]); 查询的第一个结果是“2,1”,正如我在 phpMyAdmin 中看到的那样。 var_dump($result) 返回 string(3) "2,1" 而 var_dump($result) with for 返回 string(1) "2" string(1) "," string(1) "1" 以获得相同的结果。编码为 UTF-8 顺便说一句,当我逐字符读取结果时,if($result[$i] == 2) 有效 【参考方案1】:

您究竟想用代码完成什么?可能有一种更简单的方法可以完全编写它,但我无法理解您正在尝试做什么。您是否尝试在返回的逗号分隔整数列表中查找给定整数的位置?

【讨论】:

以上是关于无法读取 GROUP_CONCAT 结果中的特定值的主要内容,如果未能解决你的问题,请参考以下文章

GROUP_CONCAT 中的双重结果与 MySQL 中的双重 JOIN

如何包含两个表中的所有值? group_concat 和其他值

SQL将的同一个分组中的值连接起来,返回一个字符串结果 使用group_concat()

MySQL 如何对特定字段进行 GROUP_CONCAT?

如何将 MySQL 子查询中的所有不同值选择到 group_concat 中?

仅将具有不同值的多个 GROUP_CONCAT() 的结果组合在一起