首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL CONVERT() 函數詳解:字符集轉換的標準用法

     編輯:MySQL 綜合教學

語法定義

CONVERT(expr USING transcoding_name)
  • `expr`:待轉換的字符串或列
  • `transcoding_name`:**目標字符集名稱** (如 `utf8`, `gbk`, `latin1`)
  • MySQL 中轉換代碼名 **等同於字符集名**

核心示例

1. 字符串字面量轉換

SELECT CONVERT(_latin1'Müller' USING utf8);

介紹符 `_latin1` 聲明字面量原編碼,轉為 UTF-8。

2. 表間數據遷移轉換

INSERT INTO utf8_table (utf8_col)
SELECT CONVERT(latin1_col USING utf8) FROM latin1_table;

將 `latin1_table` 的數據轉碼寫入 `utf8_table`。

標準合規性

`CONVERT(... USING ...)` 符合 **標準 SQL 規範**,跨資料庫可移植性優於 `CAST()`。

特殊行為:零日期轉換

  • 傳統 SQL 模式下:`CONVERT('0000-00-00', DATE)` 返回 `NULL`。
  • MySQL 5.1+:額外產生一條 **Warning**。
  • 嚴格模式下可能直接報錯。

對比:CONVERT vs CAST

特性CONVERT(expr USING charset)CAST(expr AS type)
主要用途字符集編碼轉換數據類型轉換 (INT, DATE, CHAR...)
標準SQL 標準SQL 標準
字符集轉換✅ 原生支援❌ 需配合 CHARSET 子句

實戰場景

  • 歷史系統 `latin1`/`gbk` 數據庫遷移至 `utf8mb4`
  • 異構數據源 ETL 中編碼統一
  • 修復亂碼數據 (需知原編碼)

注意事項

  1. 轉換 **不可逆** (信息可能損失),操作前必備份。
  2. 源數據實際編碼必須與聲明編碼一致,否則產生亂碼。
  3. 大表轉換建議分批、低峰期執行,鎖表風險較大。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved