2013-04-17 37 views
17

Tôi có một bảng trong cơ sở dữ liệu của tôi và tôi muốn chạy một truy vấn nhưChuyển đổi sản lượng truy vấn MySQL để utf8

SELECT column1, column2 FROM my_table WHERE my_condition; 

nhưng tôi muốn mysql để trả lại column2 trong bảng mã utf8. Có bất kỳ chức năng trong mysql để làm nhiệm vụ đó? Đó là gì?

+1

Thử 'SELECT column1, CONVERT (cột2 SỬ DỤNG utf8) ...' –

Trả lời

34

Bạn có thể sử dụng CAST và CONVERT để chuyển đổi giữa các loại mã hóa khác nhau. Xem: http://dev.mysql.com/doc/refman/5.0/en/charset-convert.html

SELECT column1, CONVERT(column2 USING utf8) 
FROM my_table 
WHERE my_condition; 
+1

Câu trả lời tốt hơn nhiều so với những gì tôi tìm thấy ở nơi khác. Câu trả lời của tài liệu chính thức cho câu hỏi này là một trò đùa hoàn chỉnh: "CHỌN CAST (_latin1'test 'AS CHAR CHARACTER SET utf8);" Tại sao không thêm vào một vài biểu tượng sai lầm hơn cho tên biến ??? – HoldOffHunger

8
SELECT CONVERT(CAST(column as BINARY) USING utf8) as column FROM table 
+0

Cảm ơn bạn đã cứu ngày của tôi :) –

+0

Cảm ơn! Lưu ngày của tôi để! – Portekoi

2

Addition:

Khi sử dụng MySQL client thư viện, thì bạn nên ngăn chặn một sự chuyển đổi trở lại kết nối của bạn charset mặc định. (Xem mysql_set_character_set()[1])

Trong trường hợp này, sử dụng một dàn diễn viên bổ sung cho nhị phân:

SELECT column1, CAST(CONVERT(column2 USING utf8) AS binary) 
FROM my_table 
WHERE my_condition; 

Nếu không, báo cáo kết quả SELECT chuyển thành utf-8, nhưng thư viện khách hàng của bạn chuyển đổi nó trở lại một (có khả năng khác nhau) bộ ký tự kết nối mặc định.

Các vấn đề liên quan