MySQL 是一種流行的關係型資料庫管理系統,常用於儲存有結構的資料。在 MySQL 中,數字類型是經常使用的資料類型之一,但由於不同的系統和資料來源之間可能會存在格式差異,因此在進行數字類型的轉換時可能會遇到一些問題。本文將介紹如何在 MySQL 中進行數位類型的轉換。
資料類型 | ##描述 |
TINYINT | 1 位元組有符號整數 |
SMALLINT | 2 位元組有符號整數 |
#MEDIUMINT | 3 位元組有符號整數 |
#INT | 4 位元組有符號整數 |
#BIGINT | 8 位元組有符號整數 |
#FLOAT | 單精確度浮點數 |
DOUBLE | 雙精確度浮點數 |
DECIMAL | 固定精確度小數 |
上表中,整數類型分別使用1、2、3、4、8 個位元組來儲存數據,浮點數類型分別使用4 和8 個位元組來儲存數據,DECIMAL 類型使用4 至65 個字節不等的儲存空間來儲存數據,具體的儲存空間取決於列定義中設定的小數點位數。
接著,我們將討論在MySQL 中進行數字類型轉換的常見場景:
- 將字串轉換為數字類型
在很多情況下,我們需要將儲存在資料庫中的字串轉換為數字類型,例如將使用者輸入的字串轉換為數字再進行計算等。在 MySQL 中,透過使用 CAST、CONVERT 或 運算子,可以將字串轉換為數字類型。
首先,我們來看看 CAST 函數的用法。 CAST 函數接受兩個參數,第一個參數是需要進行型別轉換的值,第二個參數是需要轉換的目標資料型態。例如,將字串 '123' 轉換為 INT 類型,可以使用下列語句:
SELECT CAST('123' AS INT);
如果字串無法轉換為目標資料類型,將會傳回 NULL 值。
接下來,我們來看看 CONVERT 函數的用法。 CONVERT 函數也接受兩個參數,第一個參數是需要進行型別轉換的值,第二個參數是需要轉換的目標資料型態。例如,將字串 '123' 轉換為 DOUBLE 類型,可以使用以下語句:
SELECT CONVERT('123', DOUBLE);
在這裡,目標資料型別沒有使用引號括起來,而是直接寫在 SQL 語句中。如果字串無法轉換為目標資料類型,將會傳回 0。
最後,我們來看看使用 運算子進行型別轉換的用法。將字串轉換為數字類型時,可以將字串和資料類型相加,例如:
SELECT '123' + 0;
在這裡,我們將字串'123' 與數字0 相加,MySQL 會自動將字串'123' 轉換為數字類型123。
- 將數字類型轉換為字串類型
在許多情況下,我們需要將數字類型轉換為字串類型,例如將數字作為參數傳遞給存儲過程或函數時。在 MySQL 中,透過使用 CAST 或 CONVERT 函數可以將數字類型轉換為字串類型。
首先,我們來看看 CAST 函數的用法。 CAST 函數接受兩個參數,第一個參數是需要進行型別轉換的值,第二個參數是需要轉換的目標資料型態。例如,將數字 123 轉換為字串類型,可以使用以下語句:
SELECT CAST(123 AS CHAR);
在這裡,我們將數字 123 轉換為 CHAR 類型的字串。
接下來,我們來看看 CONVERT 函數的用法。 CONVERT 函數也接受兩個參數,第一個參數是需要進行型別轉換的值,第二個參數是需要轉換的目標資料型態。例如,將數字 123 轉換為字串類型,可以使用以下語句:
SELECT CONVERT(123, CHAR);
在這裡,我們將數字 123 轉換為 CHAR 類型的字串。
- 在資料匯入時進行數字類型轉換
在進行資料匯入時,來源資料往往會儲存在CSV 檔案或Excel 檔案中,而這些檔案中的數字資料常常是以字串的形式儲存的。在將資料匯入到 MySQL 時,需要將這些字串資料轉換為 MySQL 支援的數位資料類型。
例如,在使用 MySQL 的 LOAD DATA INFILE 指令匯入資料時,我們可以使用 SET 子句來指定每個資料列的資料類型。例如,假設我們有一個名為sample.csv 的文件,其中包含以下資料:
"1001","John","Doe","30"
"1002","Jane","Doe","25"
我們可以使用以下命令將資料匯入到名為sales 表的MySQL 資料庫中:
LOAD DATA INFILE 'sample.csv'
INTO TABLE sales
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(@col1, @col2, @col3, @col4)
SET
id = CAST(@col1 AS INT),
first_name = @col2,
last_name = @col3,
age = CAST(@col4 AS INT)
;
在這裡,我們使用CAST 函數將@col1 和@col4 轉換為INT 類型的數字,然後將值插入id 和age 列。由於 first_name 和 last_name 是字串類型的列,因此我們無需進行類型轉換。
當然,除了 CAST 函數外,我們也可以使用 CONVERT 函數或 運算子,在資料匯入時進行數字類型轉換。
綜上所述,當我們需要在 MySQL 中進行數字型別轉換時,可以使用 CAST、CONVERT 或 運算子。在資料匯入時,我們也可以使用 SET 子句指定每個列的資料類型。透過掌握這些方法,可以更靈活地處理數位類型數據,使其符合我們的業務需求。