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.php
phpMyAdmin 디렉토리 의 파일에 액세스 할 수있는 경우 가장 좋은 해결책은 다음 줄을 변경하는 것입니다.
$ cfg [ '서버'] [$ i] [ 'extension'] = 'mysql';
이에:
$ cfg [ '서버'] [$ i] [ 'extension'] = 'mysqli';
mysqli 확장을 사용할 수 있으면 사용하십시오. 더 안전하고 좀 더 최적화되어 있으며 기본적으로 utf-8의 BLOB 유형을 더 잘 처리합니다. 다른 특별한 구성 옵션을 추가하지 않고도 [BLOB] 항목이 값으로 표시되기 시작해야합니다.
'program story' 카테고리의 다른 글
Spring Boot 웹 애플리케이션에서 JSP 파일이 렌더링되지 않음 (0) | 2021.01.05 |
---|---|
PHP에서 숫자를 달러 금액으로 포맷하는 방법 (0) | 2021.01.05 |
배열이 null인지 비어 있는지 확인하는 방법은 무엇입니까? (0) | 2021.01.05 |
Visual Studio Code 편집기에 오른쪽 여백을 추가하는 방법은 무엇입니까? (0) | 2020.12.31 |
내 Visual Studio 솔루션 폴더 아래에있는 "storage.ide"파일은 무엇이며 "영구 저장소"란 무엇입니까? (0) | 2020.12.31 |