답변:
불필요합니다. 그냥 SELECT CONVERT(column USING utf8) FROM
대신 .....를 사용하십시오 SELECT column FROM
...
UTF-8 인코딩 으로 Blob을 char (1000)로 변환하려는 사람 의 예는 다음과 같습니다 .
CAST(a.ar_options AS CHAR(10000) CHARACTER SET utf8)
이것이 그의 대답입니다. 당신은 CAST에 대해 읽을 수 많은 아마이 바로 여기 . 나는 그것이 도움이되기를 바랍니다.
나는 같은 문제가 있었고 여기 내 해결책이 있습니다.
ALTER TABLE mytable ADD COLUMN field1_new TEXT NOT NULL, ADD COLUMN field2_new TEXT NOT NULL; update mytable set field1_new = CONVERT(field1 USING utf8), field2_new = CONVERT(field2 USING utf8); alter table mytable drop column field1, drop column field2; alter table mytable change column field1_new field1 text, change column field2_new field2 text;
아주 쉽게 할 수 있습니다.
ALTER TABLE `table_name` CHANGE COLUMN `column_name` `column_name` LONGTEXT NULL DEFAULT NULL ;
위의 쿼리는 저에게 효과적이었습니다. 나는 그것이 당신에게도 도움이되기를 바랍니다.
또는이 기능을 사용할 수 있습니다 :
DELIMITER $$
CREATE FUNCTION BLOB2TXT (blobfield VARCHAR(255)) RETURNS longtext
DETERMINISTIC
NO SQL
BEGIN
RETURN CAST(blobfield AS CHAR(10000) CHARACTER SET utf8);
END
$$
DELIMITER ;
이 답변들 중 어느 것도 나를 위해 일하지 않았습니다. UTF8로 변환 할 때 인코더가 바이트 세트를 발견하면 UTF8로 변환 할 수 없습니까? 대체는 데이터 손실을 초래합니다. UTF16을 사용해야합니다.
SELECT
blobfield,
CONVERT(blobfield USING utf16),
CONVERT(CONVERT(blobfield USING utf16), BINARY),
CAST(blobfield AS CHAR(10000) CHARACTER SET utf16),
CAST(CAST(blobfield AS CHAR(10000) CHARACTER SET utf16) AS BINARY)
MySQL Workbench에서 이진 값을 검사 할 수 있습니다. 필드-> 뷰어에서 값 열기-> 이진을 마우스 오른쪽 버튼으로 클릭하십시오. BINARY로 다시 변환 할 때 이진 값은 원래 값과 같아야합니다.
또는이 목적을 위해 만들어진 base-64를 사용할 수 있습니다.
SELECT
blobfield,
TO_BASE64(blobfield),
FROM_BASE64(TO_BASE64(blobfield))
SELECT CONVERT(column USING utf8) FROM table;