использование group_concat в PHPMYADMIN покажет результат как [BLOB - 3B] - PullRequest
55 голосов
/ 25 января 2010

У меня есть запрос, который использует GROUP_CONCAT mysql для целочисленного поля.
Я использую PHPMYADMIN для разработки этого запроса. Моя проблема в том, что вместо того, чтобы показать 1,2, который является результатом объединенного поля, я получаю [BLOB - 3B].

Запрос

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

(оба поля без знака int, оба не являются уникальными)

Что мне добавить, чтобы увидеть фактические результаты?

Ответы [ 6 ]

85 голосов
/ 26 апреля 2010

Похоже, что GROUP_CONCAT ожидает, что это значение будет строкой. Я просто столкнулся с той же проблемой. Решил это путем преобразования столбца int в строку, например, так:

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

Думаю, я поделюсь, если у вас все еще будут проблемы с этим.

43 голосов
/ 05 ноября 2010

В соответствии с документацией MySQL , CAST(expr AS type) является стандартным SQL и, следовательно, должно быть допущено. Также вы можете опустить длину строки. Поэтому я бы предложил следующее:

SELECT rec_id, GROUP_CONCAT(CAST(user_id AS CHAR))
FROM t1
GROUP BY rec_id
21 голосов
/ 11 января 2013

Для меня это помогло (нашел это в этом сообщении в блоге ):

В моем случае параметр GROUP_CONCAT был строкой, но функция все еще приводила к BLOB, но преобразование результата GROUP_CONCAT сработало.

CONVERT(GROUP_CONCAT(user_id) USING 'utf8')
19 голосов
/ 16 июня 2011

Чуть выше результата запроса (слева) вы увидите +options. Нажмите и отметьте

Показать содержимое BLOB

0 голосов
/ 11 февраля 2016

Вы можете сделать это:

set session group_concat_max_len = 512;

Если group_concat_max_len больше 512, запрос вернет байт []. Но вы можете перейти на строку.

System.Text.Encoding.Default.GetString((byte[])DataTable.Rows[0][0]);
0 голосов
/ 24 июня 2011

Если у вас есть доступ к файлу config.inc.php в каталоге phpMyAdmin, то Я думаю, что лучшее решение состоит в том, чтобы изменить эту строку:

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

к этому:

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

Если у вас есть доступное расширение mysqli, используйте его. Он более безопасный, немного более оптимизированный и по умолчанию лучше обрабатывает тип BLOB типа utf-8. Ваши записи [BLOB] должны начать отображаться как их значения без добавления каких-либо других специальных параметров конфигурации.

...