我在数据库中有一个表格,我想运行如下查询:
SELECT column1, column2 FROM my_table WHERE my_condition;
但是我希望mysql能以utf8编码返回column2
列。mysql有没有这样的函数来完成这个任务?那是什么?
但是我希望mysql能以utf8编码返回column2
列。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 *
进行操作,因为这是一个语法错误,可以使用 select convert(* using utf8)
。 - Gaurav AggarwalSELECT CONVERT(mycol1 USING utf8), CONVERT(mycol2 USING utf8)
- josh-fuggleSELECT 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可能无法正常工作。
SELECT column1, CONVERT(column2 USING utf8)...
。 - Explosion Pills