|
|
踢足球的围巾 · HttpClient freezing ...· 1 年前 · |
|
|
被表白的楼梯 · 如何使用Django复选框的getlist方 ...· 2 年前 · |
|
|
深沉的野马 · PHP实现获取url地址中一级域名_php ...· 2 年前 · |
|
|
刚毅的消炎药 · WEBSHELL管理工具流量特征——基础篇 ...· 2 年前 · |
|
|
着急的野马 · 在前后端分离项目中应用CAS - 简书· 2 年前 · |
我有很多记录,其中文本存储在MySQL的blob中。为了便于处理,我想将数据库中的格式更改为文本...您是否知道如何轻松地进行更改以避免中断数据-我猜需要对其进行适当的编码?
下面是一个使用 UTF-8 编码将blob转换为char(1000)的 a person 示例:
CAST(a.ar_options AS CHAR(10000) CHARACTER SET utf8)
这就是他的答案。关于CAST right here ,你可以读到更多的东西。我希望它能有所帮助。
这是不必要的。只需使用
SELECT CONVERT(column USING utf8) FROM
.....不仅仅是
SELECT column FROM
..。
或者,您可以使用此函数:
DELIMITER $$
CREATE FUNCTION BLOB2TXT (blobfield VARCHAR(255)) RETURNS longtext
DETERMINISTIC
NO SQL
BEGIN
RETURN CAST(blobfield AS CHAR(10000) CHARACTER SET utf8);
DELIMITER ;
你可以很容易地做到这一点。
ALTER TABLE `table_name` CHANGE COLUMN `column_name` `column_name` LONGTEXT NULL DEFAULT NULL ;
上面的查询对我有效。我希望这对你也有帮助。
这些答案对我来说都不起作用。当转换为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工作台中检查二进制值。右键单击字段-> Open Value in Viewer-> Binary。当转换回二进制值时,二进制值应该与原始值相同。
或者,您可以只使用base-64,它就是为此目的而制作的:
SELECT