我的数据库中有一个表,我想运行一个查询
SELECT column1, column2 FROM my_table WHERE my_condition;
但我希望 mysql 返回column2
utf8 编码。mysql中有什么功能可以完成这样的任务吗?那是什么?
您可以使用 CAST 和 CONVERT 在不同类型的编码之间切换。见:http ://dev.mysql.com/doc/refman/5.0/en/charset-convert.html
SELECT column1, CONVERT(column2 USING utf8)
FROM my_table
WHERE my_condition;
SELECT CONVERT(CAST(column as BINARY) USING utf8) as column FROM table
添加:
使用 MySQL客户端库时,应防止转换回连接的默认字符集。(见mysql_set_character_set()
[1])
在这种情况下,对二进制使用额外的强制转换:
SELECT column1, CAST(CONVERT(column2 USING utf8) AS binary)
FROM my_table
WHERE my_condition;
否则,该SELECT
语句将转换为 utf-8,但您的客户端库会将其转换回(可能不同的)默认连接字符集。
我已将下一个代码用于 LATIN1(或您的数据库字符集)到 UTF8 问题:
SELECT column1,
CONVERT(CAST(CONVERT(column2 USING LATIN1) AS BINARY) USING UTF8) AS column2
FROM my_table
WHERE my_condition
它从 LATIN1 转换为 BINARY,然后转换为 UTF8,因为直接从 LATIN1 转换为 UTF8 可能不起作用。