SQL CAST函數基礎語法與實用範例解析

作者:帆軟行業化團隊

2025年7月29日 · 12 min read

來源:帆軟
92eec1c2949d406297b6c4bef6e67305.webp

你在撰寫SQL查詢時,經常會遇到資料型態不一致的問題。這時,CAST函數就能派上用場。你可以用它明確地將字串如'12'轉成整數12,或將數字轉為字串,解決sql型別轉換的困擾。CAST廣泛支援多種資料庫,讓你靈活處理資料,減少錯誤發生

核心要點

  • CAST函數能幫助你在SQL查詢中轉換資料型態,讓資料更容易運算和顯示。
  • CAST語法簡單,格式是CAST(表達式 AS 目標資料類型),適用多數資料庫。
  • 常見轉換型態包括字串、整數、日期、時間和浮點數,滿足日常資料處理需求。
  • 使用CAST不會改變資料表原始資料,只會影響查詢結果,安全又方便。
  • 注意資料格式正確與精度問題,必要時搭配ROUND函數,避免轉換錯誤。

語法說明

20988db54750475ea857e05d3aa814c8.webp
語法說明

基本結構

你在使用CAST函數時,會發現它的語法非常直觀。標準語法如下:

CAST(表達式 AS 目標資料類型)

這裡的AS關鍵字扮演分隔符的角色。你只要把要轉換的資料放在AS前面,把想要轉成的資料型態寫在AS後面。這樣SQL就能清楚知道你要做哪種型態的轉換。例如:

SELECT CAST('9.0' AS decimal);

這個查詢會把字串'9.0'轉成數值型態decimal,結果就是9。

小提醒:AS關鍵字讓來源資料和目標型態分得很清楚,這樣你在做sql型別轉換時就不容易搞混。

不同資料庫系統的CAST語法大致相同,但還是有些小差異:

  • SQL Server:CAST(expression AS data_type [(length)]),你可以指定長度。
  • MySQL:CAST(data AS data_type),支援BINARY、CHAR、DATE、DATETIME、TIME、DECIMAL、SIGNED、UNSIGNED等型態。
  • SQL Server還有CONVERT函數,能用style參數做日期格式化,CAST則沒有這個功能。
  • MySQL的CAST無法用來做字元集轉換,這點和CONVERT不同。

你只要記住,CAST的基本結構在主流資料庫都很類似,學會一種就能舉一反三。

參數意義

CAST函數有兩個主要參數:

  • 表達式(expression):你想要轉換的資料,可以是欄位、常數或運算結果。
  • 目標資料類型(data_type):你希望轉換成的型態,例如INT、VARCHAR、DATE等。

AS關鍵字就是把這兩個參數分開,讓SQL知道你要從哪個型態轉到哪個型態。這種明確的語法設計,讓你在做sql型別轉換時更有信心。

你在查詢時用CAST,只會影響查詢結果,不會改變原本資料表裡的內容。舉例來說,你把一個字串欄位轉成數字來做運算,原始資料還是字串,只有查詢結果是數字。這樣你可以放心做各種型態轉換,不怕誤改資料。

注意:只有在你用INSERT或UPDATE等語句時,才會把轉換後的資料寫進資料表。單純用CAST查詢,原始資料完全不會變。

你學會CAST語法後,能更靈活地處理sql型別轉換問題。無論你用哪種資料庫,這個技能都很實用。

sql型別轉換應用

常見型態

你在資料查詢或資料處理時,經常需要進行sql型別轉換。CAST函數支援多種常見型態,讓你可以根據需求靈活轉換資料格式。以下是CAST常見可轉換的資料型態

  • 二進制(BINARY):你可以將資料轉成二進制格式,適合處理加密或特殊儲存需求。
  • 字串型(CHAR()):你能把數字、日期等型態轉成字串,方便做顯示或拼接。
  • 日期(DATE):你可以將字串或數字轉成日期型態,讓資料更容易進行時間運算。
  • 時間(TIME):你能把資料轉成時間格式,適合記錄時分秒。
  • 日期時間型(DATETIME):你可以將資料轉成完整的日期與時間格式,方便做時間戳記。
  • 浮點數(DECIMAL):你能把字串或整數轉成小數,適合做精確的數學運算。
  • 整數(SIGNED):你可以將字串或小數轉成有符號整數,方便做加減乘除。
  • 無符號整數(UNSIGNED):你能把資料轉成無符號整數,適合處理不會有負數的資料。

你在做sql型別轉換時,這些型態幾乎涵蓋了日常資料處理的所有需求。舉例來說,你可以把字串'2024-06-01'轉成DATE型態,或把數字100轉成CHAR型態,讓資料更容易閱讀或運算。

小提醒:你在轉換時,來源資料必須符合目標型態的格式。例如,你要把字串轉成日期,字串內容必須是有效的日期格式,否則會出現錯誤。

轉換限制

雖然CAST函數很強大,但你在使用時還是會遇到一些限制。不是所有型態都能直接轉換,特別是某些特殊型態。舉例來說,在Oracle資料庫中,LONG和LOB這類大型物件型態,CAST就無法直接處理。你如果想轉換這些型態,必須用其他專用函數或步驟。

你還要注意,CAST主要用於格式化輸出或強制型態轉換,讓資料能符合運算需求。例如,你在做數學運算時,必須先把字串轉成數字,否則SQL會出現型態錯誤。你也可以用CAST把日期轉成字串,方便做格式化顯示。

注意:你在做sql型別轉換時,務必確認來源資料內容正確,否則轉換失敗會導致查詢錯誤或資料遺失。

你學會善用CAST,就能大幅提升資料查詢與處理的彈性。無論你用哪種資料庫,掌握這些型態轉換技巧,會讓你的SQL功力更上一層樓。

實用範例

數字與字串

你經常需要在查詢時,把數字轉成字串,或把字串轉成數字。這樣可以讓資料更容易顯示或運算。以下是常見的CAST用法:

  • 數字轉字串
    你想把數字100轉成字串,可以這樣寫:

    SELECT CAST(100 AS CHAR) AS num_to_str;
    

    查詢結果會顯示字串"100"。這個方法在MySQL、SQL Server、PostgreSQL都適用。

  • 字串轉數字
    你有一個字串'123',想轉成整數,可以這樣做:

    SELECT CAST('123' AS SIGNED) AS str_to_num;
    

    結果會得到數字123。這樣的sql型別轉換,讓你能直接進行數學運算。

小提醒:來源資料必須正確,否則轉換會失敗。

日期與字串

你在處理日期資料時,常常需要在字串和日期型態之間轉換。這樣可以讓你更靈活地顯示或比對資料。

  • 字串轉日期
    你有一個字串'2024-06-01',想轉成日期型態:

    SELECT CAST('2024-06-01' AS DATE) AS str_to_date;
    

    查詢結果會是日期2024-06-01。這個語法在多數資料庫都能用。

  • 日期轉字串
    你想把日期型態轉成字串,方便顯示:

    SELECT CAST(CURRENT_DATE AS CHAR) AS date_to_str;
    

    結果會得到像"2024-06-01"這樣的字串。

你用CAST做sql型別轉換時,能讓資料在不同格式間自由切換,提升查詢彈性。

CAST與CONVERT比較

語法差異

你在學習SQL時,常常會遇到CAST和CONVERT這兩個函數。雖然它們都能做型別轉換,但語法和功能還是有些不同。你可以參考下表,快速了解兩者的差異:

函數名稱標準支援基本語法特色與用途
CASTCAST(表達式 AS 目標型態)標準SQL語法,跨資料庫通用
CONVERT×CONVERT(目標型態, 表達式 [,格式])支援格式參數,常用於SQL Server

你用CAST時,只需要指定來源資料和目標型態。你用CONVERT時,還可以加上格式參數,像是日期格式化。CAST屬於SQL標準語法,MySQL、PostgreSQL、SQL Server都支援。CONVERT則主要在SQL Server和Sybase常見,MySQL的CONVERT語法和功能又有些不同。

小提醒:你在跨資料庫開發時,建議優先選用CAST,這樣能確保語法相容性。

選用建議

你在選擇CAST或CONVERT時,可以根據需求做判斷:

  • 你想寫跨資料庫的SQL查詢,建議用CAST。
  • 你需要進行特殊格式轉換(如日期格式),可以用CONVERT,特別是在SQL Server。
  • 你在MySQL中,CONVERT主要用於字元集轉換,型別轉換還是建議用CAST。

你只要記住:CAST簡單、通用,CONVERT功能多但相容性較低。根據你的資料庫和需求,靈活選擇最合適的函數,才能讓SQL查詢更穩定、更有效率。

注意事項

精度問題

你在使用CAST做sql型別轉換時,必須特別注意精度問題。當你把浮點數轉成整數時,CAST不會自動幫你四捨五入。舉例來說,如果你將3.5這個數字轉成整數,CAST只會保留3,小數部分0.5會被直接捨棄。這種行為稱為「截斷」,不是四捨五入。你在進行資料運算時,這一點很重要,因為結果可能和你預期不同。

小提醒:如果你需要四捨五入的效果,建議你先用ROUND等函數處理,再用CAST轉型。

你還要注意,當你把數字轉成字串時,CAST會保留原本的數值內容,不會自動改變格式。如果你轉換的目標型態長度不夠,資料可能會被截斷,導致顯示不完整。

型態限制

你在做sql型別轉換時,並不是所有型態都能互轉。CAST支援大多數常見型態,例如整數、字串、日期等。但像是Oracle的LONG、LOB這類特殊型態,CAST就無法直接處理。你如果硬要轉換,系統會出現錯誤訊息。

  • CAST不會改變原始資料表的內容,只會影響查詢結果。你在查詢時看到的型態是轉換後的,但資料表裡的資料還是原來的型態。
  • 當你轉換失敗時,SQL會回報錯誤。你應該檢查來源資料是否符合目標型態的格式。例如,把無法解析的字串轉成日期,查詢就會失敗。

注意:你在寫查詢時,最好先確認資料內容,再做型態轉換,這樣可以減少錯誤發生。

你學會這些注意事項後,能更安全地使用CAST處理各種資料型態,讓你的sql型別轉換更有效率。

 

你已經學會CAST函數的語法與常見用法。這個工具讓你在sql型別轉換時更有效率,也能避免資料型態不符的錯誤。你在實務操作時,請特別注意型態轉換的限制,像是特殊型態無法直接轉換或精度問題。

多練習各種範例,能讓你更熟悉資料處理的細節。

你可以參考以下建議,靈活搭配其他型態轉換函數:

  1. 用CAST單純轉換欄位或常數的型態。
  2. 處理複雜運算時,多次使用CAST,像是日期差計算或除法運算
  3. 搭配ROUND函數保留小數位,確保數據正確。
  4. 結合CASE語句與CAST,避免除以0等錯誤。

你只要善用這些技巧,sql型別轉換就能變得更簡單、更安全。

FAQ

CAST和CONVERT有什麼不同?

CAST屬於標準SQL語法,適用多數資料庫。CONVERT在SQL Server常見,能指定格式。你寫跨資料庫查詢時,建議優先用CAST。

CAST可以直接修改資料表裡的資料嗎?

你用CAST只會改變查詢結果。資料表裡的原始資料不會被改動。你要修改資料,必須用UPDATE語句。

什麼情況下CAST會失敗?

當你轉換的資料格式不正確時,CAST會失敗。例如,把無法解析的字串轉成日期,或把字母轉成數字。

CAST可以用來轉換所有型態嗎?

你不能用CAST轉換所有型態。像Oracle的LONG、LOB等特殊型態,CAST無法直接處理。你需用其他專用函數。

CAST轉換數字時會自動四捨五入嗎?

CAST不會自動四捨五入。你把3.7轉成整數時,結果只會是3。你需要四捨五入時,請先用ROUND函數。

 

帆軟產品免費試用

企業戰情室報表軟體

企業戰情室報表軟體

複雜報表/戰情室/資料填報/數位孿生

企業商業智慧BI軟體

企業商業智慧BI軟體

自助資料處理/Dashboard/探索分析

一站式資料整合平台

一站式資料整合平台

資料同步/ETL資料開發/API資料服務

免費資源下載

×

立即下載

姓名

郵箱

公司完整名稱

管道了解

-- 您是怎麽瞭解的我們 --

網路搜尋
Facebook臉書
媒體/部落格/論壇
YouTube
電子報
線下展會
線下課程
他人推薦
其他

職位

-- 選擇您的職稱 --

IT資訊&數據部門
一般部門
管理/ 決策者
老師
學生
其他

是否有報表/BI/數位建設需求?

-- 請選擇 --

沒有
不確定

手機號碼

SMS 驗證碼

×

立即下載

姓名

郵箱

公司完整名稱

管道了解

-- 您是怎麽瞭解的我們 --

網路搜尋
Facebook臉書
媒體/部落格/論壇
YouTube
電子報
線下展會
線下課程
他人推薦
其他

職位

-- 選擇您的職稱 --

IT資訊&數據部門
一般部門
管理/ 決策者
老師
學生
其他

是否有報表/BI/數位建設需求?

-- 請選擇 --

沒有
不確定

手機號碼

SMS 驗證碼

×

立即下載

姓名

郵箱

公司完整名稱

管道了解

-- 您是怎麽瞭解的我們 --

網路搜尋
Facebook臉書
媒體/部落格/論壇
YouTube
電子報
線下展會
線下課程
他人推薦
其他

職位

-- 選擇您的職稱 --

IT資訊&數據部門
一般部門
管理/ 決策者
老師
學生
其他

是否有報表/BI/數位建設需求?

-- 請選擇 --

沒有
不確定

手機號碼

SMS 驗證碼

×

立即下載

姓名

郵箱

公司完整名稱

管道了解

-- 您是怎麽瞭解的我們 --

網路搜尋
Facebook臉書
媒體/部落格/論壇
YouTube
電子報
線下展會
線下課程
他人推薦
其他

職位

-- 選擇您的職稱 --

IT資訊&數據部門
一般部門
管理/ 決策者
老師
學生
其他

是否有報表/BI/數位建設需求?

-- 請選擇 --

沒有
不確定

手機號碼

SMS 驗證碼

×

立即下載

姓名

郵箱

公司完整名稱

管道了解

-- 您是怎麽瞭解的我們 --

網路搜尋
Facebook臉書
媒體/部落格/論壇
YouTube
電子報
線下展會
線下課程
他人推薦
其他

職位

-- 選擇您的職稱 --

IT資訊&數據部門
一般部門
管理/ 決策者
老師
學生
其他

是否有報表/BI/數位建設需求?

-- 請選擇 --

沒有
不確定

手機號碼

SMS 驗證碼

×

立即下載

姓名

郵箱

公司完整名稱

管道了解

-- 您是怎麽瞭解的我們 --

網路搜尋
Facebook臉書
媒體/部落格/論壇
YouTube
電子報
線下展會
線下課程
他人推薦
其他

職位

-- 選擇您的職稱 --

IT資訊&數據部門
一般部門
管理/ 決策者
老師
學生
其他

是否有報表/BI/數位建設需求?

-- 請選擇 --

沒有
不確定

手機號碼

SMS 驗證碼

我們很樂意傾聽你的需求,解答您的疑問,並提供專業建議, 助力您的企業實現智慧轉型!

×

意見回饋

姓名

電郵

公司

國家/地區

-- select an option --

電話

投訴原因

請選擇投訴原因

代理商問題
產品問題
技術支援服務問題
專案問題
銷售問題
商務問題
行銷問題
其他

投訴內容