近期專案需要將原本運行於 MSSQL Server 的服務遷移至 MySQL,過程中發現 SQL 語句中的類型轉換函數存在顯著差異。MySQL 的 CONVERT 函數不僅資料類型名稱相容性較差,參數順序也與 SQL Server 截然不同,這成為遷移過程中的主要阻礙之一。
-- SQL Server 寫法
CONVERT(int, Port)
-- MySQL 寫法
CONVERT(Port, SIGNED) AS `port`
關鍵點:MySQL 中必須加上 AS `port` 別名,否則結果集的列名會顯示為完整的函數表達式 convert(Port, SIGNED),影響後續應用層解析。
[] 包裹特殊符號、保留字`(鍵盤 Esc 下方、數字鍵 1 左側的鍵,無需按 Shift)轉換時指定的類型必須是以下值之一:
BINARY[(N)]CHAR[(N)]DATEDATETIMEDECIMALSIGNED [INTEGER]TIMEUNSIGNED [INTEGER]CONVERT 呼叫[] 替換為 `MySQL 官方文件:Cast Functions and Operators