program story

PHPMYADMIN에서 group_concat을 사용하면 결과가 [BLOB-3B]로 표시됩니다.

inputbox 2021. 1. 5. 08:03
반응형

PHPMYADMIN에서 group_concat을 사용하면 결과가 [BLOB-3B]로 표시됩니다.


정수 필드에 mysql의 GROUP_CONCAT를 사용하는 쿼리가 있습니다.
이 쿼리를 개발하기 위해 PHPMYADMIN을 사용하고 있습니다. 연결된 필드의 결과 인 1,2를 표시하는 대신 [BLOB-3B]를 얻는 문제가 있습니다.

검색어는

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

(두 필드 모두 unsigned int, 둘 다 고유하지 않음)

실제 결과를 보려면 무엇을 추가해야합니까?


GROUP_CONCAT에서 해당 값이 문자열 일 것으로 예상하는 것처럼 보입니다. 나는 방금 같은 문제에 부딪쳤다. int 열을 다음과 같은 문자열로 변환하여 해결했습니다.

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

이 문제가 계속 발생하는 경우를 대비하여 공유하겠습니다.


MySQL의 문서에 따르면 , CAST(expr AS type)표준 SQL이며, 따라서 perferred해야합니다. 또한 문자열 길이를 생략 할 수 있습니다. 따라서 다음을 제안합니다.

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

나를 위해 이것은 도움이되었습니다 (이 블로그 게시물 에서 찾았 습니다 ).

제 경우에는 매개 변수 GROUP_CONCAT가 문자열 이었지만 함수는 여전히 BLOB를 생성했지만 GROUP_CONCAT작업 결과를 변환합니다 .

CONVERT(GROUP_CONCAT(user_id) USING 'utf8')

쿼리 결과 바로 위에 (왼쪽)가 표시 +options됩니다. 그것을 누르고 표시

BLOB 내용 표시


다음과 같이 할 수 있습니다.

set session group_concat_max_len = 512;

group_concat_max_len이 512보다 크면 쿼리는 byte []를 반환합니다. 그러나 문자열로 전달할 수 있습니다.

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

config.inc.phpphpMyAdmin 디렉토리 파일에 액세스 할 수있는 경우 가장 좋은 해결책은 다음 줄을 변경하는 것입니다.

$ cfg [ '서버'] [$ i] [ 'extension'] = 'mysql';

이에:

$ cfg [ '서버'] [$ i] [ 'extension'] = 'mysqli';

mysqli 확장을 사용할 수 있으면 사용하십시오. 더 안전하고 좀 더 최적화되어 있으며 기본적으로 utf-8의 BLOB 유형을 더 잘 처리합니다. 다른 특별한 구성 옵션을 추가하지 않고도 [BLOB] 항목이 값으로 표시되기 시작해야합니다.

참조 URL : https://stackoverflow.com/questions/2133936/using-group-concat-in-phpmyadmin-will-show-the-result-as-blob-3b

반응형