정확하게 정확히 40 바이트로 자르려면 잘 모르겠습니다.
유니 코드 문자가 엉망이 될 수 있으므로 조건은 이어야하며 마지막 문자는 여전히 유효합니다 (최대 40 바이트).
나는 그것에 대한 저장 함수를 작성합니다. 나는 그것이 작동하는지 모르겠지만, 내 생각에, 당신은 내 표류를 잡는다. :
DELIMITER &&&
CREATE FUNCTION MYTRUNCATE (subject VARCHAR(255) CHARACTER SET utf8, max_bytes INT UNSIGNED)
RETURNS VARCHAR(255) CHARACTER SET utf8
DETERMINISTIC
BEGIN
DECLARE byte_len INT;
DECLARE char_len INT;
DECLARE res VARCHAR(255) CHARACTER SET utf8;
SET res = LEFT(subject, max_bytes);
SET byte_len = BIT_LENGTH(res)/8;
SET char_len = CHAR_LENGTH(res);
WHILE byte_len > max_bytes DO
SET char_len = char_len - 1;
SET res = LEFT(res, char_len);
SET byte_len = BIT_LENGTH(res)/8;
END WHILE;
RETURN res;
END&&&
DELIMITER ;
정확한 해결책을 찾고 있습니다. 바로 아이디어를 얻고 싶습니다 . – uuid0
"CHARACTER SET utf8"을 사용중인 문자로 조정하십시오. – uuid0
멋진 멋지다. - 그냥 사용하고 잘 작동하는 것 같습니다 - 감사합니다! – Gaioshin