首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 數字類型轉換函數速查:CAST、CONVERT 與 CONCAT 技巧

     編輯:MySQL 資料庫相關知識

MySQL 類型轉換函數速查表

MySQL 提供 CAST()、CONVERT() 以及隱式轉換,支援數值、字串、日期、二進制互轉。本文整理常用轉換模式與技巧。

一、核心函數語法

函數語法標準
CASTCAST(expr AS type)SQL 標準
CONVERTCONVERT(expr, type) 或 CONVERT(expr USING charset)SQL 標準 / MySQL 擴展

二、可用目標類型

類型關鍵字含義備註
BINARY二進制字串等同 CAST(expr AS BINARY),按字節比較
CHAR[(N)]字符串可指定長度 N
DATE日期YYYY-MM-DD
TIME時間HH:MM:SS
DATETIME日期時間YYYY-MM-DD HH:MM:SS
DECIMAL[(M[,D])]精確定點數M 總位數,D 小數位
SIGNED [INTEGER]有符號整數INT 範圍
UNSIGNED [INTEGER]無符號整數BIGINT 範圍

三、常用轉換模式

1. 數字 → 字串


-- 方式 1:CAST
SELECT CAST(123 AS CHAR);        -- '123'

-- 方式 2:CONCAT(最常用技巧)
SELECT CONCAT(123, '');          -- '123'
SELECT CONCAT(8, '0');           -- '80'  (拼接字串)

-- 方式 3:CONVERT
SELECT CONVERT(123, CHAR);

2. 字串 → 數字


SELECT CAST('123' AS SIGNED);      -- 123
SELECT CAST('123.45' AS DECIMAL(10,2)); -- 123.45
SELECT CAST(a AS UNSIGNED) FROM t; -- 列轉換

3. 日期時間互轉


SELECT CAST('2023-10-15' AS DATE);
SELECT CAST('14:30:00' AS TIME);
SELECT CAST('2023-10-15 14:30:00' AS DATETIME);
SELECT DATE_FORMAT(NOW(), '%Y%m%d');  -- 格式化輸出字串

4. 字符集轉換


SELECT CONVERT('中文' USING utf8mb4);
SELECT CONVERT('中文' USING gbk);

四、隱式轉換規則(自動發生)

  • 數字上下文中字串自動轉數字:SELECT '123' + 1 → 124
  • 字串上下文中數字自動轉字串:SELECT CONCAT(123, 'abc') → '123abc'
  • 比較運算時按數字比較:SELECT '10' > '2' → 1 (數字比較)

風險: 隱式轉換可能導致索引失效(列發生隱式轉換)。建議顯式 CAST。

五、實戰技巧

  1. ORDER BY CAST(col AS UNSIGNED):數字字串按數值排序(而非字典序)。
  2. WHERE CAST(id AS CHAR) LIKE '100%':數字列按字串前綴匹配。
  3. INSERT ... SELECT CAST(col AS DECIMAL(10,2)):異構遷移時精度統一。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved