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

a11xaf1n  于 2022-11-09  发布在  PHP
关注(0)|答案(7)|浏览(173)

我有一个查询,它使用了mysql的GROUP_CONCAT对一个整数字段。
我使用PHPMYADMIN来开发这个查询。我的问题是,不是显示连接字段的结果1,2,而是得到[BLOB - 3B]。
查询为

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

(both字段为无符号整型,两者都不是唯一的)
我应该添加什么才能看到实际结果?

6qftjkof

6qftjkof1#

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

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

我想我应该告诉你以防你还不满意。

b09cbbtk

b09cbbtk2#

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

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

ifsvaxew3#

对我来说,这很有帮助(在这个blog post中找到的):
在我的例子中,GROUP_CONCAT的参数是字符串,但是函数仍然产生BLOB,但是转换GROUP_CONCAT的结果是有效的。

CONVERT(GROUP_CONCAT(user_id) USING 'utf8')
fwzugrvs

fwzugrvs4#

在查询结果的正上方(左侧),您将看到+options。按下它并标记
显示BLOB内容
全文

qaxu7uf2

qaxu7uf25#

您可以执行以下操作:

set session group_concat_max_len = 512;

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

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

gdrx4gfi6#

  • 在最新的Phpmyadmin中 *

运行查询后,您将看到一些结果,然后点..
因此,只需单击选项(位于查询结果顶部)
然后只需选择
全文
单选按钮,默认值为部分文本
然后按Go按钮,您将看到完整结果

kyks70gy

kyks70gy7#

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

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

更改为:

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

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

相关问题