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

时间:2010-01-25 16:53:01

标签: mysql casting phpmyadmin group-by group-concat

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

查询

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

(两个字段都是unsigned int,两者都不是唯一的)

我应该添加什么来查看实际结果?

7 个答案:

答案 0 :(得分:85)

看起来GROUP_CONCAT期望该值为字符串。我刚遇到同样的问题。通过将int列转换为如此字符串来解决它:

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

如果您仍然遇到此问题,我会分享。

答案 1 :(得分:42)

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

答案 2 :(得分:21)

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

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

CONVERT(GROUP_CONCAT(user_id) USING 'utf8')

答案 3 :(得分:19)

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

  

显示BLOB内容

答案 4 :(得分:0)

你可以这样做:

set session group_concat_max_len = 512;

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

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

答案 5 :(得分:0)

在最新的Phpmyadmin中

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

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

然后只需选择

  

全文

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

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

答案 6 :(得分:-1)

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

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

到此:

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

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