57

我有一个在整数字段上使用 mysql 的 GROUP_CONCAT 的查询。
我正在使用 PHPMYADMIN 开发此查询。我的问题是,我没有显示连接字段的结果 1,2,而是得到 [BLOB - 3B]。

查询是

SELECT rec_id,GROUP_CONCAT(user_id)
FROM t1
GROUP BY rec_id

(两个字段都是无符号整数,都不是唯一的)

我应该添加什么才能看到实际结果?

4

7 回答 7

88

看起来好像 GROUP_CONCAT 期望该值是一个字符串。我刚刚遇到了同样的问题。通过将 int 列转换为字符串来解决它,如下所示:

SELECT rec_id,GROUP_CONCAT(CONVERT(user_id, CHAR(8)))
FROM t1
GROUP BY rec_id

想我会分享,以防你仍然有这个问题。

于 2010-04-26T19:40:29.430 回答
44

根据 MySQL 文档CAST(expr AS type)是标准 SQL,因此应该优先使用。此外,您可以省略字符串长度。因此,我建议如下:

SELECT rec_id, GROUP_CONCAT(CAST(user_id AS CHAR))
FROM t1
GROUP BY rec_id
于 2010-11-05T11:23:40.010 回答
22

对我来说,这有帮助(在这篇博文中找到):

在我的情况下,参数GROUP_CONCAT是字符串,但该函数仍然产生一个 BLOB,但转换了GROUP_CONCAT工作的结果。

CONVERT(GROUP_CONCAT(user_id) USING 'utf8')
于 2013-01-11T09:03:13.553 回答
20

在查询结果上方(左侧),您将看到+options。按下它并标记

显示 BLOB 内容

于 2011-06-16T15:46:41.953 回答
0

你可以这样做:

set session group_concat_max_len = 512;

如果 group_concat_max_len 大于 512,查询将返回 byte[]。但是你可以传递给一个字符串。

System.Text.Encoding.Default.GetString((byte[])DataTable.Rows[0][0]);
于 2016-02-11T10:58:22.217 回答
0

在最新的 Phpmyadmin

运行查询后,您将看到一些结果,然后点 ..

所以只需单击选项(位于查询结果的顶部)

然后只需选择

全文

单选按钮,默认为部分文本

然后按Go按钮,您将看到完整的结果

于 2019-12-09T05:18:31.943 回答
-1

如果您可以访问config.inc.phpphpMyAdmin 目录中的文件,那么我认为最好的解决方案是更改此行:

$cfg['Servers'][$i]['extension'] = 'mysql';

对此:

$cfg['Servers'][$i]['extension'] = 'mysqli';

如果您有可用的 mysqli 扩展,请使用它。它更安全,更优化,默认情况下它更好地处理 utf-8 的 BLOB 类型。您的 [BLOB] 条目应该开始显示为它们的值,而无需添加任何其他特殊配置选项。

于 2011-06-23T23:28:57.400 回答