在PHPMYADMIN中使用group_concat将结果显示为[BLOB-3B]

问题描述 投票:56回答:7

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

查询是

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

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

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

mysql casting phpmyadmin group-by group-concat
7个回答
87
投票

好像GROUP_CONCAT期望该值是一个字符串。我只是遇到了同样的问题。通过将int列转换为类似这样的字符串来解决它:

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

想想如果您仍然对此有疑问,我愿意与您分享。


44
投票

According to the MySQL documentationCAST(expr AS type)是标准SQL,因此应该被认为是。另外,您可以省略字符串长度。因此,我建议以下内容:

SELECT rec_id, GROUP_CONCAT(CAST(user_id AS CHAR))
FROM t1
GROUP BY rec_id

21
投票

对我来说,这有所帮助(在此blog post中找到了它:]:

在我的情况下,GROUP_CONCAT的参数是字符串,但是该函数仍然会产生BLOB,但是转换GROUP_CONCAT的结果是可行的。

CONVERT(GROUP_CONCAT(user_id) USING 'utf8')

19
投票

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

显示BLOB内容


0
投票

您可以这样做:

set session group_concat_max_len = 512;

如果group_concat_max_len大于512,则查询将返回字节[]。但是您可以传递给字符串。

System.Text.Encoding.Default.GetString((byte[])DataTable.Rows[0][0]);

0
投票

使用最新的Phpmyadmin

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

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

然后只需选择

全文

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

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


-1
投票

如果您有权访问phpMyAdmin目录中的config.inc.php文件,则我认为最好的解决方案是更改此行:

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

对此:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.